【发布时间】:2017-08-03 15:53:54
【问题描述】:
C 代码:
#include<stdio.h>
#include<string.h>
#define STRINGS 10
#define STR_LEN 20
int main(void)
{
char words[STRINGS][STR_LEN];
char input[STR_LEN];
int i;
int mycount;
for(i = 0;i < STRINGS;++i;)
{
printf("Enter a word (or 0 to quit)\n:");
scanf("%19s", input);
if(input[0] == '0') break;
strncpy(words[i], input, STR_LEN);
mycount++;
}
printf("A total of %d strings were entered!\n",mycount);
}
问题:当我运行此代码并输入一些字符串时,它不会打印出我输入的字符串数量
【问题讨论】:
-
for(i = 0;i < STRINGS;++i;)无法编译。 BTWi和mycount是相同的,除了mycount从未初始化。 -
您忘记将
mycount初始化为零 -
只是提示:在主要实现的 C 标准库中发现明显错误并非闻所未闻,但可能性极小。这东西是20或30岁。相对不太可能发现编译器错误或 CPU 错误。我想我们中的大多数人在某个时候都怀疑过其中之一,但它几乎从来都不是真的。比如,我在 1997 年左右有一位同事确实在 Z80 克隆中发现了一个错误。那不太可能。在所有其他情况下,该错误或多或少是一个微妙的编码错误,或者是构建环境设置中的错误。
-
不要使用
strncpy,这是一个危险的函数,并且从未打算用于以空结尾的字符串see this。
标签: c c-strings standard-library