【发布时间】:2021-04-18 19:13:45
【问题描述】:
我正在尝试将多个字符串数组标记合并为一个,例如:
char* args = { "zero" , "one', "two"}
注意 args 不是固定大小,它可以是 1 或 100
我想做一个新数组
char* array ={"one two"}
中间有空格。
我试过了:
char* array;
int i=1;
for(i=1; i< sizeof(args)-1 ; i++){
strcat(array, args[i]);
}
但不断出现分段错误。
这是我正在使用的代码,需要添加将我的所有 args 从 1(不是零,因为 arg[0] 有一个命令)组合到任何大小的函数:
else if ( (args[1] != NULL) && (strchr(args[1], '=') != NULL) ) {
memcpy(aliasCommands[aliasCount], args[1], 512 );
printf("Save Alias\n");
printf("Alias Added : %s\n", aliasCommands[aliasCount]);
aliasCount++;
printf("Alias Number : %d\n", aliasCount);
}
我想传递 args[1] 空间 args[2] 等等,而不是只有 args[1]
让我们这么说
args[1]={"command='ls"}
args[2]={"cd'"}
以此类推,args 最多可达 512。我想将它们作为一个字符串传入
aliasCommand[aliasCount] = {"command='ls cd'"}
【问题讨论】:
-
您尝试的方法将有效,除非您从未分配过
char* array... -
分配足够的内存来保存每个token以及每个token之间的空间以及一个空终止符,然后你可以试试strcat。
-
您的代码不包含任何字符串。如果您使用单引号,则在键入
int时创建字符文字。如果将多个字符包含在单引号中,则会得到一个多字节字符文字,其值由实现定义。你想要的是使用双引号"而不是'。 -
我更新了我的代码以使其更清晰,这对我不起作用。
标签: arrays c c-strings string-concatenation string-literals