我在代码中有这一部分:
char* data="My name is: ";
我想在此添加argv[1]
代表名称的参数。如何在c代码中做到这一点?我已经尝试过strcpy
,strcat
但是当 Ipcp 执行此操作时出现分段错误:
strcpy(data,argv[1]);
有人可以帮忙吗?
还有为什么:data=data+argv[1]
不工作?
我在代码中有这一部分:
char* data="My name is: ";
我想在此添加argv[1]
代表名称的参数。如何在c代码中做到这一点?我已经尝试过strcpy
,strcat
但是当 Ipcp 执行此操作时出现分段错误:
strcpy(data,argv[1]);
有人可以帮忙吗?
还有为什么:data=data+argv[1]
不工作?
您需要提供一些内存,可以将连接的结果存储到其中。例如:
char buffer[1024];
strcpy(buffer, "My name is: ");
strcat(buffer, argv[1]);
但是请注意,这很容易出错:如果argv[1]
与前缀字符串组合的值超过 1024 个字符,则会产生缓冲区溢出。所以,也许是这样的:
char* prefix = "My name is: ";
int length = strlen(prefix) + strlen(argv[1]) + 1;
char* buffer = malloc(length);
if (!buffer) abort();
else
{
strcpy(buffer, prefix);
strcat(buffer, argv[1]);
/* Do something with buffer here. And don't
* forget to free it, once you no longer need
* it. This is C -- no garbage collection. */
free(buffer);
}
还有为什么:data=data+argv[1] 不起作用?
关于这一点 - C 中的数据和 argv 只不过是指向包含您的字符串的内存中的地址的指针。您不能以这种方式连接字符串(char*)。我建议看一下字符串库,也许更多地看一下整个 C 语言。
您不能附加到数据指针,因为其中没有空间
char result_data [1024];
char* data="My name is: ";
strcat(result_data, data);
strcat(result_data, argv[1]);