我正在使用C编程语言。我希望将文本文件中的字符转换为大写字母,并在转换后在屏幕上打印文本文件内容。
这是我的代码:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fptr;
char filename[30];
char ch;
printf("Enter filename you want to make capital letters: \n");
scanf("%s",filename);
fptr = fopen(filename,"r");
ch = fgetc(fptr);
while(ch != EOF)
{
ch = toupper(ch);
printf("%c",ch);
ch = fgetc(fptr);
}
fclose(fptr);
return 0;
}
答案 0 :(得分:1)
你很顺利!以下是一些建议的调整:
首先,char ch
应为int ch
。请查看fgetch
的手册页,您会发现它返回int
。这实际上非常重要,因为返回的EOF将超出char
的范围,但在int
的范围内。
接下来,您可以简化一下。为什么不:
while((ch = fgetc(ptr)) != EOF)
{
printf("%c", (char)ch);
}
这会将您的逻辑测试和读取移到一行,从而消除当前包含fgetch
的两行。
最后,您应该#include<ctype.h>
,因为那是定义int toupper(int)
的头文件。