我需要使用gets()将用户输入中的代码转换为输入txt文件中的扫描。 找到一种计算每个单词中字母数的方法也会很有帮助。以1个字母的单词开头。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
int acount, bcount, ccount, dcount, ecount, fcount, gcount, hcount, icount, jcount, kcount, lcount, mcount, ncount, ocount, pcount, qcount, rcount, scount, tcount, ucount, vcount, wcount, xcount, ycount, zcount = 0;
char *str;
printf("Enter any string : ");
gets(str);
while (*str != '\0')
{
if(isalpha(*str))
{
toupper(*str);
switch(*str)
{
case 'A':
++acount;
break;
case 'B':
++bcount;
break;
case 'C':
++ccount;
break;
case 'D':
++dcount;
break;
case 'E':
++ecount;
break;
case 'F':
++fcount;
break;
case 'G':
++gcount;
break;
case 'H':
++hcount;
break;
case 'I':
++icount;
break;
case 'J':
++jcount;
break;
case 'K':
++kcount;
break;
case 'L':
++lcount;
break;
case 'M':
++mcount;
break;
case 'N':
++ncount;
break;
case 'O':
++ocount;
break;
case 'P':
++pcount;
break;
case 'Q':
++qcount;
break;
case 'R':
++rcount;
break;
case 'S':
++scount;
break;
case 'T':
++tcount;
break;
case 'U':
++ucount;
break;
case 'V':
++vcount;
break;
case 'W':
++wcount;
break;
case 'X':
++xcount;
break;
case 'Y':
++ycount;
break;
case 'Z':
++zcount;
break;
}//Close case
}//Close if
}//Close while
printf("Number of A's: %d", acount);
}
答案 0 :(得分:3)
代码中的许多错误
您没有将所有list2
变量初始化为(x)count
,请阅读有关昏迷操作员的信息。
您使用0
这是一个平均且已弃用的函数。
您传递了一个未初始化的指向gets()
的指针,该指针是未定义的行为。
gets()
不会修改toupper(*str)
。
试试这个
*str
答案 1 :(得分:0)
iharob回复中的所有评论都是正确的。阅读我对他对额外问题的回应的评论。这是一个简单的解决方案:
$
编辑:这是一个处理文件而不是输入行的解决方案:
#include <stdio.h>
int main(void) {
int counts[256] = { 0 };
int c;
printf("Enter any string: ");
while ((c = getchar()) != EOF && c != '\n') {
counts[c & 255]++;
}
printf("Number of A's: %d", counts['a'] + counts['A']);
return 0;
}