为什么这些c代码不起作用?这些怎么了?

cod*_*ody 0 c

#include < stdio.h >

#include < string.h >

int main()

{

unsigned char a;

FILE *P;

P=fopen("mola.txt","r");

while((a=getc(P))!=EOF)

printf("%c",a);

}
Run Code Online (Sandbox Code Playgroud)

这些代码有什么问题?当我编译它时会发出警告"由于数据类型的范围有限,比较总是如此." 这个警告意味着什么?

cni*_*tar 7

您将结果存储getc在a中char.它应该是一个int.它上面还有一个C FAQ.你也应该检查一下它的返回值fopen.

P=fopen("mola.txt","r");
if (NULL == P) {
    perror("fopen"):
}
Run Code Online (Sandbox Code Playgroud)

while看起来也很腥.尝试缩进?

while((a=getc(P)) != EOF)
    printf("%c",a);
Run Code Online (Sandbox Code Playgroud)