【发布时间】:2023-01-18 23:53:30
【问题描述】:
我正在尝试一个非常简单的程序,其中 test.txt 中编写的任何内容都会被复制到 up.txt 中,但要用大写字母。我在 Windows 11 上使用 dev c++,运行程序后创建了 up.txt 文件,但它是空的,我不知道为什么。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(){
FILE *fpin, *fpout;
char x;
fpin=fopen("test.txt","r");
if(fpin==NULL){
fprintf(stderr,"read error\n");
exit(666);
}
fpout=fopen("up.txt","w");
if(fpout=NULL){
fprintf(stderr,"write error/n");
exit(667);
}
while((x=fgetc(fpin))!=EOF){
fputc(toupper(x),fpout);
}
fclose(fpin);
fclose(fpout);
return 0;
}
我在 linux 上成功地尝试了相同的程序,但我不确定为什么它在 windows 上不起作用
【问题讨论】:
-
您的代码有误:将
if (fpout = NULL)更改为if (fpout == NULL)。我看不出您的代码如何在任何平台上运行。 -
使用
int x而不是char,因为EOF超出了256个有效char值的范围 -
@Bodo 这不是主要问题。
-
您可以将那些
fprintf(stderr,"some error")与perror("some error")交换,这将在以后的程序中打印"some error: <error message>"—— 这样您就知道了什么地方出了错. -
@sartttt 至于你的问题,它可能会因为“由错字引起”而被关闭。不要让你气馁:你的问题是有效的,实际上非常好就第一个 SO 问题而言。你包括了一个minimal reproducible example,大多数初学者都没有,并描述了问题。接近的投票基本上只是技术性的(答案对你有帮助,但不太可能对未来的读者有帮助,所以不会列出)。 +1给你。