将gets()更改为txt文件输入

时间:2015-11-15 20:57:16

标签: c

我需要使用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);

}

2 个答案:

答案 0 :(得分:3)

代码中的许多错误

  1. 您没有将所有list2变量初始化为(x)count,请阅读有关昏迷操作员的信息。

  2. 您使用0这是一个平均且已弃用的函数。

  3. 您传递了一个未初始化的指向gets()的指针,该指针是未定义的行为。

  4. gets()不会修改toupper(*str)

  5. 试试这个

    *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;
}