C编程初学者-请解释此错误
我刚从C开始,尝试了里奇书中的几个例子。我写了一个小程序来理解字符数组,但偶然发现了一些错误,并希望了解我理解的错误:C编程初学者-请解释此错误,c,arrays,C,Arrays,我刚从C开始,尝试了里奇书中的几个例子。我写了一个小程序来理解字符数组,但偶然发现了一些错误,并希望了解我理解的错误: #include <stdio.h> #define ARRAYSIZE 50 #include <string.h> main () { int c,i; char letter[ARRAYSIZE]; i=0; while ((c=getchar()) != EOF ) { letter[i]=c; i+
#include <stdio.h>
#define ARRAYSIZE 50
#include <string.h>
main () {
int c,i;
char letter[ARRAYSIZE];
i=0;
while ((c=getchar()) != EOF )
{
letter[i]=c;
i++;
}
letter[i]='\0';
printf("You entered %d characters\n",i);
printf("The word is ");
printf("%s\n",letter);
printf("The length of string is %d",strlen(letter));
printf("Splitting the string into chars..\n");
int j=0;
for (j=0;j++;(j<=strlen(letter)))
printf("The letter is %d\n",letter[j]);
}
发生了什么事?为什么for循环没有给出任何输出?错误在for中,只需交换结束条件和增量,如下所示:
for (j = 0; j <= strlen(letter); j++)
for(j=0;j语法应为
for (j=0; j<strlen(letter); j++)
此外,强烈建议在处理C字符串和用户输入时始终检查缓冲区溢出:
while ((c=getchar()) != EOF && i < ARRAYSIZE - 1)
while((c=getchar())!=EOF&&i
循环的正确格式为:
for (initialization_expression; loop_condition; increment_expression){
// statements
}
所以你的for
循环应该是
for (j = 0; j < strlen(letter); j++)
for(j=0;j
for(j=0;j++;(j在for循环中,条件是i++,第一次计算结果为false(0)。您需要将它们交换为:for(j=0;jj@another.anon.coward:当然,但我认为看到空终止符对操作系统有好处。谢谢。在基本语法上摸索!@Droidzone:我开始时也遇到了同样的问题!:D+1:目前为止,这里只回答了一个问题,试图解释为什么循环不打印任何输出。对于这个提示,我将添加错误检查很快。我想我会弄清楚基本情况。看看我是如何在for的语法中出错的:)
for (initialization_expression; loop_condition; increment_expression){
// statements
}
for (j = 0; j < strlen(letter); j++)