【发布时间】:2015-06-20 03:19:04
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
FILE *fp1;
char ch,f[100],c,d;
int ct=0;
printf("Enter the file name\n");
scanf("%s",f);
fp1=fopen(f,"r");
printf("Enter character:");
scanf(" %c",&c);
c=toupper(c);
do
{
ch=fgetc(fp1);
d=toupper(ch);
if(c==d||c==ch)
++ct;
} while(ch!=EOF);
fclose(fp1);
printf("\n");
printf("%d",ct);
return 0;
}
这里我的文件包含aAaAaA,当我执行此代码时,我在文件中得到 6 个字符,但我应该将它作为 3 个字符,因为 a 和 A 不区分大小写。这段代码有什么问题?
【问题讨论】:
-
The condition is a and A are case insensitive...恕我直言,你的意思正好相反。 -
检查
fopen是否不返回NULL。如果是,则结束程序 -
使用
int ch, d, c否则代码无法正确区分EOF与所有其他256 个char。
标签: c file char case-sensitive case-insensitive