另一个问题
char str[10];
strncat(str, "I love FishC.com!", sizeof(str));
这里的 str 没有初始化,你就直接 strncat 是有问题的
因为 str 中的内容是随机的
可能你会说这个程序你运行的没有问题呀
的确
这个代码我这边也没问题,但是你能解释下面这个代码为什么输出了 2 次而不是 10 次吗?
不管怎么运行,都是输出 2 次,而且输出的内容也不对
- $ cat main.c
 - #include <stdio.h>
 - #include <string.h>
 
- int main()
 - {
 -     for(size_t i = 0; i < 10; ++i) {
 -         char str[10];
 -         strncat(str, "I love FishC.com!", sizeof(str));
 -         printf("str=%s\n",str);
 -     }
 -     return 0;
 - }
 - $ gcc -g -Wall -o main main.c
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $ ./main
 - str=I love Fis
 - str=I love FisI love Fis
 - $
 
 复制代码