用数组输入字符串然后输入一个字符查找在字符串中出现的次数,该怎么处理
用数组输入字符串然后输入一个字符查找在字符串中出现的次数
//输入一个字符串,然后输入一个字符,计算该字符在字符串中出现的次数,但是最结果总是比真实个数大1,即字符出现两次,那么结果会是3,大侠们看看我的代码,哪里错了,感激不尽
#include<stdio.h>
int main()
{
int i,count ;
char a;
char str[10];
i = 0;
while((str[i] = getchar()) != '\n'){
i ++;
str[i] = '\0';
}
printf("Enter an digit:");
scanf("%c",&a);
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
else
continue;
printf("count = %d\n",count);
return 0;
}
------解决方案--------------------
//输入一个字符串,然后输入一个字符,计算该字符在字符串中出现的次数,但是最结果总是比真实个数大1,即字符出现两次,那么结果会是3,大侠们看看我的代码,哪里错了,感激不尽
#include<stdio.h>
int main()
{
int i,count ;
char a;
char str[10];
i = 0;
while((str[i] = getchar()) != '\n'){
i ++;
str[i] = '\0';
}
printf("Enter an digit:");
scanf("%c",&a);
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
else
continue;
printf("count = %d\n",count);
return 0;
}
------解决方案--------------------
- C/C++ code
#include<stdio.h> int main() { int i,count ; char a; char str[10] = {0}; i = 0; while((str[i] = getchar()) != '\n') { i ++; str[i] = '\0'; } printf("Enter an digit:"); scanf("%c",&a); count = 0; for(i = 0;str[i] ;i ++) if( str[i] == a) { count ++; } else continue; printf("count = %d\n",count); return 0; }
------解决方案--------------------
- C/C++ code
#include<stdio.h> int main() { int i,count ; char a; char str[10]; i = 0; while((str[i] = getchar()) != '\n'){ i ++; str[i] = '\0'; // 当回车后,这段不会执行,str可能没结束符,会导致越界 } printf("Enter an digit:"); // 为什么是an而不是a,digit是数字,字符应该是Character scanf("%c",&a); count = 0; for(i = 0;str[i] ;i ++) if( str[i] == a) count ++; else continue; // 这个没必要吧 printf("count = %d\n",count); return 0; }
------解决方案--------------------
- C/C++ code
#include<stdio.h> int main() { int i,count ; char a; char str[10]; i = 0; while((str[i] = getchar()) != '\n') { i ++; } str[i] = '\0';//当跳出输入循环的时候的后一个字符置为结束符 printf("Enter an digit:"); scanf("%c",&a); count = 0; for(i = 0;str[i]!='\0' ;i ++)//你的for循环跳出的判断条件也有问题 { if( str[i] == a) { count ++; } else { continue; } } printf("count = %d\n",count); return 0; }
------解决方案--------------------
主要问题是数组越界,这是修改后的代码:
#include<stdio.h>
int main()
{
int i,count ;
char a;
char str[10];
i = 0;
while((str[i] = getchar()) != '\n')
i ++;
if(i>9)
str[9]='\0';
else
str[i-1]='\0';
printf("str: %s\n", str);
printf("Enter a character:");
scanf("%c",&a);
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
printf("count = %d\n",count);
return 0;
}