使用main函数参数方式,用strcat函数将命令行里各个参数字符串都连接起来,成为一个字符串后显示出来

参数通过main函数传递,而且好像vs2017用不了strcat?要用strcat_s?但是我用strcat_s的时候也不行啊.....

我没装VS 但C语言可以写

char *strcat(char *dest,const char *src);

#include<string.h>

把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'

而mian函数参数结构   int main (int argc,char *argv[])

参数1是main收到的参数总个数(也就是参数2 argv中的字符串个数)       参数2是main收到的所有参数作为字符串保存的字符串指针数组

所以要使用strcat拼接所有字符串,首先要先有对应所有字符串大小的内存空间(还要多留1位给结束符号)

下面是我的代码,我写注释了,你参考吧,我调试环境,默认只传给main一个参数,就是文件路径,你可以试多个

#include<stdio.h>
#include<string.h>
#include<malloc.h>
int getLen(int,char *[]);
int main (int argc,char *argv[])
{
    int i;
    int argvSize=getLen(argc,argv)+1;//获取到argv中所有字符个数+1  留1位给结束符号'\0'
    char *argvStr=(char *)malloc(sizeof(char)*argvSize);//定义一个字符串内存空间,准备接收拼接后的字符串
    memset(argvStr,0,argvSize);//将空间值全部初始化为'\0'

    for(i=0;i<argc;i++)
    {
        strcat(argvStr,argv[i]);//你要的strcat函数合并字符串!!!!
    }

    printf("合并后的字符串为:%s",argvStr);
    return 0;
}

int getLen(int argc,char *argv[])//获取字符串指针数组的总内存大小
{
    int len=0,i,j;
    for(i=0;i<argc;i++)
    {
        j=0;
        while(argv[i][j++]!=0)
        {
            len=len+1;
        }
    }
    return len;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-29
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char buf[1024]=0;
    int i;
    for(i = 1; i < argc; i ++)
        strcat_s(buf, sizeof(buf), argv[i]);
        
    puts(buf);
    
    return 0;
}

本回答被提问者和网友采纳
相似回答