C 不接受字符
我编写了一个C程序来计算输入字符的出现次数。执行时,我只能输入文件名。在输入要计数的字符之前,执行下一条语句。我得到的输出如下所示 Enter the file name test.txt Enter the character to be counted File test.txt has 0 instances of 输入文件名 test.txt 输入要计数的字符 文件test.txt有0个 这是我的密码C 不接受字符,c,character,C,Character,我编写了一个C程序来计算输入字符的出现次数。执行时,我只能输入文件名。在输入要计数的字符之前,执行下一条语句。我得到的输出如下所示 Enter the file name test.txt Enter the character to be counted File test.txt has 0 instances of 输入文件名 test.txt 输入要计数的字符 文件test.txt有0个 这是我的密码 #include<stdio.h> #include<stdlib
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp1;
int cnt=0;
char a,ch,name[20];
printf("Enter the file name\n");
scanf("%s",name);
//fp1=fopen(name,"r");
printf("Enter the character to be counted\n");
scanf("%c",&ch);
fp1=fopen(name,"r");
while(1)
{
a=fgetc(fp1);
if (a==ch)
cnt=cnt+1;
if(a==EOF)
break;
}
fclose(fp1);
printf("File %s has %d instances of %c",name,cnt,ch);
return 0;
}
#包括
#包括
int main()
{
文件*fp1;
int-cnt=0;
字符a,ch,name[20];
printf(“输入文件名\n”);
scanf(“%s”,名称);
//fp1=fopen(名称,“r”);
printf(“输入要计数的字符\n”);
scanf(“%c”和“ch”);
fp1=fopen(名称,“r”);
而(1)
{
a=fgetc(fp1);
if(a==ch)
cnt=cnt+1;
如果(a==EOF)
打破
}
fclose(fp1);
printf(“文件%s有%c的%d个实例”,名称、cnt、ch);
返回0;
}
如何解决这个问题?这是初学者常见的问题,尤其是在使用函数族时 问题是,当您输入文件名并按enter键时,函数将读取文本,但将enter键(换行符)保留在输入缓冲区中,因此当您下次读取字符时,它将读取该换行符 解决方案非常简单:通过在格式中放置单个空格,告知读取并丢弃任何前导空格:
如果您按照指向的链接进行操作,它将告诉您几乎所有格式都会自动读取并丢弃前导空格,三个例外之一就是读取单个字符的格式,
%c“
这是初学者常见的问题,尤其是在使用函数族时
问题是,当您输入文件名并按enter键时,函数将读取文本,但将enter键(换行符)保留在输入缓冲区中,因此当您下次读取字符时,它将读取该换行符
解决方案非常简单:通过在格式中放置单个空格,告知读取并丢弃任何前导空格:
如果您按照指向的链接进行操作,它将告诉您几乎所有格式都会自动读取并丢弃前导空格,三个例外之一就是读取单个字符的格式,%c
scanf(“%c”,&ch)代码>-->scanf(“%c”和&ch)代码>,注意空格scanf(“%c”和&ch)代码>-->scanf(“%c”和&ch)代码>,注意空格
scanf(" %c",&ch);
// ^
// |
// Note leading space