索引到char数组以附加字符串

时间:2016-01-20 05:54:09

标签: c string

我这样做是为了追加一些文字:

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|||||.....

1 个答案:

答案 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);