如何使用getc()显示从文件中读取的字符
当我尝试从名为“file1”的文件读取输入时,我的程序正确显示文件中的字符数 ,但以无法识别的字符格式显示。 下面是代码如何使用getc()显示从文件中读取的字符
#include <stdio.h>
#include <stdlib.h>
void db_sp(FILE*);
int main(int argc,char *argv[])
{
FILE *ifp,*ofp;
if(argc!=2) {
fprintf(stderr,"Program execution form: %s infile\n",argv[0]);
exit(1);
}
ifp=fopen(argv[1],"r");
if (ifp==NULL) printf("sdaf");
//ofp=fopen(argv[2],"w+") ;
db_sp(ifp);
fclose(ifp);
//fclose(ofp);
return 0;
}
void db_sp(FILE *ifp)
{
char c;
while(c=getc(ifp) !=EOF) {
//printf("%c",c);
putc(c,stdout);
if(c=='\n' || c=='\t' || c==' ')
printf("%c",c);
}
}
的问题是在这里:
while(c=getc(ifp) !=EOF){
因为operator precendence,这getc(ifp) !=EOF
最先被执行。然后c = <result of comparison>
得到执行。这不是你想要的顺序。
使用括号强制正确的顺序。
while((c=getc(ifp)) !=EOF) {
其他说明: getc
返回一个int
所以你应该改变的c
类型int
。 另外,如果您无法打开文件,您仍然继续执行。你应该优雅地退出失败。
并将'char c;'改为'int c;',这是'getc()'返回并且由'putc()'所要求的类型。 –
@WeatherVane是的。更新。 –
@AjeyaSiddhartha它的价值''\ n''也是'int'类型。 –
请在您的问题中发布代码。 –
你能显示你的文件包含什么吗?你的公主打印什么? – Yashas