另一个问题
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
- $
复制代码