gpt4 book ai didi

c - 程序计算一个字符在文件中出现的次数(不区分大小写)

转载 作者:行者123 更新时间:2023-11-30 19:42:13 26 4
gpt4 key购买 nike

在在线编辑器中执行此代码。但总是出现文件“test.txt”有 0 个字母“r”实例。该怎么办?文件“test.txt”有 99 个字母“r”实例。这是预期的输出。

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
FILE *fptr;
int d=0;
char c;
char ch,ck;
char b[100];
printf("Enter the file name\n");
scanf("%19s",b);
fptr=fopen(b,"r");
printf("Enter the character to be counted\n");
scanf(" %c",&c);
c=toupper(c);
if(fptr==NULL)
{
exit(-1);
}
while((ck=fgetc(fptr))!=EOF)
{
ch=toupper(ck);
if(c==ch||c==ck)
++d;
}
fclose(fptr);
printf("File '%s' has %d instances of letter '%c'.",b,d,c);
return(0);
}

最佳答案

问题:

  1. ck 应该是 int,而不是 char,如 @alk has pointed out因为 fgetc 返回一个 int,而不是 char
  2. 根据标题,您需要进行不区分大小写的比较。你的代码没有这样做。解决办法是这样的:

    if(c==ch||c==ck)

    需要

    if(c == ch || (tolower(c)) == ck) /* Compare upper with upper, lower with lower */

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

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