在C中向字符指针添加字符串

在C中向字符指针添加字符串,c,string,char,C,String,Char,我想给char指针添加一个字符串,我该怎么做 例如: strncpy( process_name, second, process_name_size ); process_name[ process_name_size - 1 ] = '\0'; char指针是char*进程名称; 我有一个名为second的字符数组。它包含几个字符 我想复制第二个进程名。如果知道进程名指向的缓冲区大小,可以使用strncpy() 例如: strncpy( process_name, second, proc

我想给char指针添加一个字符串,我该怎么做

例如:

strncpy( process_name, second, process_name_size );
process_name[ process_name_size - 1 ] = '\0';
char指针是char*进程名称; 我有一个名为second的字符数组。它包含几个字符


我想复制第二个进程名。

如果知道进程名指向的缓冲区大小,可以使用strncpy()

例如:

strncpy( process_name, second, process_name_size );
process_name[ process_name_size - 1 ] = '\0';

严格来说,您不能向字符指针“添加字符串”


如果缓冲区中有足够的分配空间(加上一个用于终止
'\0'
),则可以使用标准库调用,例如
strncpy()
[取决于您的精确要求,插入与追加等]向char指针指向的缓冲区添加字符串.

您可以使用'strcat'或'strncat'连接两个字符串但是您的进程名称缓冲区必须足够大以包含两个字符串。strcat将为您处理\0字节,但我仍然建议您使用固定长度的strncat

 char *strcat(char *restrict s1, const char *restrict s2);
 char *strncat(char *restrict s1, const char *restrict s2, size_t n);
示例用法如下:

process_name = realloc(process_name, strlen(process_name) + strlen(second));
strncat(process_name, second, strlen(second));

这可能不是最好的示例,但它应该显示大致方向。

我用strdup()函数解决了这个问题。

我可以用strlen(second)得到这个问题吗?@Omer-你可以用strlen得到second的大小——但是你需要一个不同的方法来获得进程名称所指向的缓冲区的大小。通常,您要么创建缓冲区,要么获得缓冲区;在前一种情况下,你知道尺寸,在后一种情况下,你可以要求地址和尺寸。@BigMike-我还在编辑的时候,你抓住了我。但这是一个很好的观点——我总是将它添加到缓冲区的末尾,如果strncpy编写它,这是无害的,否则是必要的。:)@AndyThomas Cramer:别担心,我认为每一个经验丰富的C程序员都会自动添加'\0',甚至根本不考虑它,所以这只是为了信息的完整性(希望正确地说出来):D.+1代表示例中的'\0'。关于。我像这样解决我的结果,process_name=strdup(秒);这是有效的…=)AFAIK strncpy()将擦除原始缓冲区。如果他想添加(附加)一个字符串,他应该使用strcat()。