Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程初学者-请解释此错误_C_Arrays - Fatal编程技术网

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+

我刚从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++;
  }
  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;j
j@another.anon.coward:当然,但我认为看到空终止符对操作系统有好处。谢谢。在基本语法上摸索!@Droidzone:我开始时也遇到了同样的问题!:D+1:目前为止,这里只回答了一个问题,试图解释为什么循环不打印任何输出。对于这个提示,我将添加错误检查很快。我想我会弄清楚基本情况。看看我是如何在for的语法中出错的:)
for (initialization_expression; loop_condition; increment_expression){
    // statements
}
for (j = 0; j < strlen(letter); j++)