gpt4 book ai didi

c - 如何使用 getc() 显示从文件中读取的字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:53 25 4
gpt4 key购买 nike

当我尝试从名为“file1”的文件中读取输入时,我的程序正确显示文件中的字符数,但采用无法识别的字符格式。下面是代码

#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 .另外,如果您打开文件失败,您仍然继续执行。你应该在失败时优雅地退出。

关于c - 如何使用 getc() 显示从文件中读取的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42952832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com