为什么不能检测N之后的字母(而且只出现在第三行)
最近碰到一个问题,就是统计字母出现次数的时候,第三行并且是N之后的字母不能被统计到,我试过如果是在其他行出现的话,是没有问题的,只有在第三行出现并且是N之后的字母才会被“忽略”掉,想了很久都不能明白,希望大家能帮我一下。具体为以下(编程功力不深,不知道是哪里出问题了,个人觉得很“诡异”阿,为什么是第三行才会这样,我是试过六行,也是只有第三行的文本的N以后的字母会被忽略掉):[code]/*题目:编写一个程序,该程序输入若干行文本然后用函数strchr来确定字母表中的每一个字母在这些文本中出现的总次数,大写字母和小写字母该统计到一起。将每个字母出现的总次数存储到一个数组里。按照列表的形式将这些数值打印出来。*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define L 100
int main()
{
int i;
int count = 0;
int num;
int number = 0;
int t = 0;
int times[ 26 ];
/*根据输入的数字来决定字符数组的行*/
printf ( "input the number of lines:\n" );
char sentences[ scanf ( "%d", &num ) ][ L ];
char temp[ L ];
char charater = 'A';
char *searchPtr;
printf ( "input your sentences:\n" );
/*为了把这个换行的放在temp数组,从而不影响后面的字符串录入*/
gets ( temp );
for ( i = 0; i < num; i++ ) {
gets ( sentences[ i ] );
}
while ( number < 26 ) {
/*首先统计大写的字母,比如'A'*/
for ( i = 0; i < num; i++ ) {
searchPtr = strchr ( sentences[ i ], charater );
/*如果返回指针不是NULL,说明找到字母*/
while ( searchPtr != NULL ) {
count++;
/*指针向前一步,然后继续找*/
searchPtr = strchr ( searchPtr + 1, charater );
}
}
/*然后就是小写的字母,即'A'*/
for ( i = 0; i < num; i++ ) {
searchPtr = strchr ( sentences[ i ], charater + 32 );
while ( searchPtr != NULL ) {
count++;
searchPtr = strchr ( searchPtr + 1, charater + 32 );
}
}
times[ t ] = count;
/*打印结果*/
printf ( "%c/%c %d\n", charater, charater + 32, times[ t ] );
t++;
/*字母往后一个*/
charater++;
number++;
count = 0;
}
return 0;
}/code]
运行结果如下: