字符不被接受
Character is not accepted
我编写了一个 C 程序来计算输入字符的出现次数。我执行的时候只能进入文件name.Before我输入要统计的字符,下一条语句executes.The得到的输出如下图
Enter the file name
test.txt
Enter the character to be counted
File test.txt has 0 instances of
这是我的代码
#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;
}
如何解决?
这是一个常见的初学者问题,尤其是在使用 scanf
系列函数时。
问题是当您输入文件名并按 Enter 时,scanf
函数读取文本但留下 Enter 键,换行符,在输入缓冲区中,因此当您下次读取一个字符时,它将读取该换行符。
解决方案非常简单:通过在 scanf
格式中放置一个 space 来告诉 scanf
读取并丢弃任何前导白色-space:
scanf(" %c",&ch);
// ^
// |
// Note leading space
如果您按照 link 到 scanf
reference,它会告诉您几乎所有格式都会自动读取并丢弃前导白色-space,三个例外之一就是读取单个字符的格式,"%c"
.
我编写了一个 C 程序来计算输入字符的出现次数。我执行的时候只能进入文件name.Before我输入要统计的字符,下一条语句executes.The得到的输出如下图
Enter the file name test.txt Enter the character to be counted File test.txt has 0 instances of
这是我的代码
#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;
}
如何解决?
这是一个常见的初学者问题,尤其是在使用 scanf
系列函数时。
问题是当您输入文件名并按 Enter 时,scanf
函数读取文本但留下 Enter 键,换行符,在输入缓冲区中,因此当您下次读取一个字符时,它将读取该换行符。
解决方案非常简单:通过在 scanf
格式中放置一个 space 来告诉 scanf
读取并丢弃任何前导白色-space:
scanf(" %c",&ch);
// ^
// |
// Note leading space
如果您按照 link 到 scanf
reference,它会告诉您几乎所有格式都会自动读取并丢弃前导白色-space,三个例外之一就是读取单个字符的格式,"%c"
.