我想知道为什么我的程序出错了结果。我只需要从文件中读取字符,包括空格,(。),(,)等,并以特定的字符串格式输出它们。 结果我获得了更多300个char读取实例及其奇怪的表示。我需要打印实际字符及其内存位置。欣赏它!
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]);
}
}
}
}
答案 0 :(得分:1)
请记住:fgetch()
返回int
。不是char
。请参阅man page。
这是因为EOF
常量大于字符,因此返回值中必须有更多位才能表达“任何字符或EOF
”。
换句话说,EOF
不是字符,而是out-of-band通讯的示例。
另外,你的括号看起来很奇怪,你的意思是:
while((ch = fgetc(fPtr)) != EOF && ch != '\n')
仅注意分配的内部括号。