gpt4 book ai didi

c - 以不区分大小写的方式计算字符在文件中出现的次数时出错

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

请告诉我下面的代码有什么问题。执行后显示

"test.txt has 0 instances of letter 'r'"

`#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
FILE *fp;
char ch,cmp;
char f[100];
int count=0,tu1,tu2;
printf("Enter the file name\n");
scanf("%s",f);
fp=fopen(f,"r");
printf("Enter the character to be counted\n");
scanf("%c",&ch);
tu1=toupper((int)ch);
while((cmp=fgetc(fp))!=EOF)
{
tu2=toupper((int)cmp);
if(tu1==tu2)
{
count++;
}
}
fclose(fp);
printf("\nFile \'%s\' has %d instances of letter \'%c\'",f,count,ch);
return 0;
}`

最佳答案

第 1 点

在使用返回的文件指针之前,始终检查 fopen() 是否成功。在此(下方)代码行之后为 fp 添加 NULL 检查。如果为 NULL,则终止程序

 fp=fopen(f,"r");

第 2 点

改变

scanf("%c",&ch);

scanf(" %c",&ch); // mind the ' ' before c

避免之前按下 ENTER 键时存储的尾随换行符 (\n)。

第 3 点

根据 man page fgetc(),返回类型为int。将 cmp 的数据类型从 char 更改为 int

注意:

  1. main() 的推荐签名是int main(void)
  2. 初始化局部变量始终是一个很好的做法。

关于c - 以不区分大小写的方式计算字符在文件中出现的次数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30030755/

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