求助大佬们!字符串怎么多组输入呀?
如图所示,我只知道有while(scanf("%d", &a) != EOF)这种写法,
但是字符串的gets好像不能这样写……
所以我应该怎么写呢?{:10_266:} {:10_291:} 如果是用scanf输入,那么只能用getchar()=='\n'判断,
如果有多个回车,那么没法判断,谁知道你这个回车后是打完了还是没打完
参考
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINE100
#define CHARNUM1000
void printAlpha(char *str);
int main(void)
{
char *sArr = {NULL};
char *s = NULL;
char ch;
int i = 0, j = 0;
// 获取输入 ! 表示结束
while ( (ch=getchar()) != '!' )
{
s = (char *) malloc( sizeof(char) * CHARNUM );
memset(s, '\0', sizeof(char) * CHARNUM);
i = 0;
while( (ch=getchar()) != '\n' )
{
s = ch;
}
sArr = s;
}
// 打印输出
i = 0;
while( (s=sArr) != NULL)
{
printAlpha(s);
}
return 0;
}
void printAlpha(char *str)
{
int i = 0, j, max;
int sArr = {0};
char s;
// 统计
while( (s=str) != '\0' )
{
if ( (s>='A') && (s<='Z') )
{
// 大写
sArr += 1;
}
else if ( (s>='a') && (s<='z') )
{
// 小写
sArr += 1;
}
}
// 找出现次数最多的
max = 0;
j = 0;
for( i=0; i<26; i++)
{
if ( sArr>max )
{
max = sArr;
j = i;
}
}
printf("%c = %d\n", 65+j, max);
}
页:
[1]