计算字符串中的字符数(C)-问题
我必须用C语言编写一个程序,找到我选择的角色的幻影数量。 这是我的代码: 为什么如果我删除了粗体字,程序就不再工作了?我是说我不明白那条线在干什么计算字符串中的字符数(C)-问题,c,string,function,C,String,Function,我必须用C语言编写一个程序,找到我选择的角色的幻影数量。 这是我的代码: 为什么如果我删除了粗体字,程序就不再工作了?我是说我不明白那条线在干什么 #include <stdio.h> #include <string.h> int number(char c) { int i,nr=0; char s[50]; printf("Enter a string: "); fgets(s,49,stdin); for(i=0;i<
#include <stdio.h>
#include <string.h>
int number(char c)
{
int i,nr=0;
char s[50];
printf("Enter a string: ");
fgets(s,49,stdin);
for(i=0;i<strlen(s);++i)
{
if(s[i]==c)
{
nr++;
}
}
return nr;
}
int main()
{
int nra;
char b;
printf("Enter a character you want to count: ");
b=getc(stdin);
**getc(stdin);**
printf("Call the function\n");
nra=number(b);
printf("The number of apparitions of chracter %c is %d",b,nra);
return 0;
}
#包括
#包括
整数(字符c)
{
int i,nr=0;
chars[50];
printf(“输入字符串:”);
fgets(s,49,stdin);
对于(i=0;i为什么如果我删除粗体字,程序将不再工作?
排队
getc(stdin);
当您输入字符(读入b
)时,您将在输入流中留下一个换行符。并且fgets()
函数读取该换行符并停止读取进一步的输入。这就是为什么对getc()
的额外调用使其在使用换行符时工作的原因-因此fgets()
等待您的预期输入
标准输入功能来自stdio(scanf
,fgets
,getc
等)异常,通常会导致细微错误。通常最好逐行读取输入,然后进行分析,以尽量减少意外错误。提示:按a
并输入两个字符,a
后接\n
。OT:函数:getc()
返回一个int
,而不是char
。编译器应该警告您这一点。事实上,char
(通常)将无法识别EOF。OT:关于:fgets(s,49,stdin);
函数:fgets()
正确处理输入缓冲区的全长,因此无需将长度缩短1