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]);
}
}
}