我这样做是为了追加一些文字:
char text[100];
strcpy(text, "Hello");
char input[] = "random";
strncpy(text + strlen(text), input, sizeof(text) - strlen(text));
我这样做了,它似乎适用于ASCII文本。但我担心我做指针运算并不安全。如果输入是UTF-8怎么办?
仅供参考,当我text + strlen(text)
时,我得到一个指向句子末尾的指针,然后追加到句子的末尾。
即。
text => |h|e|l|l|o|NUL||||||....
text + strlen(text) => |NUL|||||.....
答案 0 :(得分:2)
这正是strcat存在的原因:
char text[100];
strcpy(text, "Hello");
char input[] = "random";
strcat(text, input);
为确保内存敏感级联防止溢出,请使用以下修订:
char *text;
//allocate memory
text = (char *) malloc(15);
strcpy(text, "Hello");
char input[] = "random";
//reallocate memory
text = (char *) realloc(text, strlen(text)+strlen(input) +1);
strcat(text, input);
free(text);