0

我想知道为什么我的程序得到错误的结果。我只需要从文件中读取字符,包括空格、(.)、(,) 和其他字符,然后以特定的字符串格式输出它们。结果,我得到了更多 300 个字符读取实例及其奇怪的表示。我需要打印实际字符及其内存位置。欣赏它!

 34 instances of character :
 35 instances of character ¼
 36 instances of character ¼
 37 instances of character ¼

  #include <stdio.h>

  int main()
  {
   char ch;
   int characters[100];
   int i,j,k;
   int charCount = 0;

   FILE *fPtr;
   fPtr=fopen("input.txt", "r");

   while(ch = fgetc(fPtr) != EOF)
   {
     i=0;
     characters[i] = (char)ch;
     i++;
   }

   int arrayLength = sizeof(characters)/sizeof(characters[0]);

   for(j= 0; j < arrayLength; j++)
   {
     for(k=1; k < arrayLength; k++)
     {
       if(characters[j] == characters[k])
   {
      charCount++;
          printf("%d instances of character %c in location %c \n", charCount, characters[j], &characters[j]);
   }
     }
   }
 }
4

1 回答 1

1

记住这一点: fgetch()返回int。不是char。请参阅手册页

这是因为EOF常量比字符大,所以返回值中必须有更多位才能表示“任何字符,或EOF”。

换句话说,EOF它不是一个字符,它是一个带外通信的例子。

此外,您的括号看起来很奇怪,您可能的意思是:

while((ch = fgetc(fPtr)) != EOF && ch != '\n')

仅注意分配周围的内括号。

于 2012-07-05T14:15:53.613 回答