C 将文件的字母计数存储到数组中

C 将文件的字母计数存储到数组中,c,C,我作业中的问题是,我必须将所有字母的计数存储在一个数组中,小写和大写字母的处理是相同的。我使用的策略是将所有字母转换为大写,然后进行计数。然而,当我试图打印输出时,它没有给我正确的输出 例如,我有一个文件读取: 添加 但是对于输出,它给了我每个字母一些疯狂的数字 这是我的代码(有点混乱): void loadText(char故事[]) { 文件*输入; int字母=0; int-other=0; 整数字符; 字符词; 输入=fopen(故事,“r”); while(fscanf(输入、%c、&

我作业中的问题是,我必须将所有字母的计数存储在一个数组中,小写和大写字母的处理是相同的。我使用的策略是将所有字母转换为大写,然后进行计数。然而,当我试图打印输出时,它没有给我正确的输出

例如,我有一个文件读取:

添加

但是对于输出,它给了我每个字母一些疯狂的数字

这是我的代码(有点混乱):

void loadText(char故事[])
{
文件*输入;
int字母=0;
int-other=0;
整数字符;
字符词;
输入=fopen(故事,“r”);
while(fscanf(输入、%c、&words)!=EOF)
{

如果((words>='A')&&&(words='A')&(words='A')&&(words='A')&&(words请尝试将
typeofletter
数组初始化为0。
int-typeofletter[26]={0}
–GoldRoger

其次,你认为fscanf在你的第二个循环中从哪里继续阅读?
如果你能浏览一个文件直到找到一个EOF,你认为下次调用EOF时会发生什么?你需要重新设置你在文件中读取的位置,你想从头开始。因为调用字符和单词非常混乱。尝试初始化
typeofletter
数组为0。
int-typeofletter[26]={0}
你没有检查fopen的返回,因此你不知道你是否真的打开了文件。其次,你认为fscanf在你的第二个循环中从哪里继续读取?初始化不起作用D:AS或者你介意再解释一点吗?谢谢如果你在遇到EOF之前一直浏览文件,你认为下次调用EO时会发生什么你需要重新设置你在文件中读取的位置,你想从头开始。
void loadText(char story[])
{
    FILE *input;
    int letter = 0;
    int other = 0;
    int totalcharacter;
    char words;

    input = fopen(story, "r");

    while(fscanf(input, "%c", &words) != EOF)
    {
        if ((words >= 'A') && (words <= 'z'))
        {
            letter++;
        }
        else
        {
            other++;
        }
    }

    totalcharacter = letter + other;

    printf("Letters: %d\n", letter);
    printf("Characters: %d\n", totalcharacter);

    int typeofletter[26];               
    int i = 0;

    while(fscanf(input, "%c", &words) != EOF)
    {
        if ((words >= 'a') && (words <= 'z'))
        {
            words = toupper(words);
        }

        if((words >= 'A') && (words<='Z'))
        {
            typeofletter[words - 'A']++;
        }
    }

    for(i = 0; i < 26; i++)
    {
        if(typeofletter[i] != 0)
        {
            printf("%c occurs %d times \n", i + 'A', typeofletter[i]);
        }
    }
}