【发布时间】:2017-10-19 17:16:16
【问题描述】:
嗨,
我需要计算一些纯文本文件中字母字符的使用情况。这就是我带来的。基本上只是运行文本文件并将每个字符与特定搜索字符的 ASCII 值进行比较。
当我运行它时,我能看到的只是第一个 printf() 字符串,并且当我关闭控制台时只是终止状态的错误。
我确实在与 .exe 文件相同的文件夹中有一个 text.txt 文件,但我什么都看不到。
不确定我的语法是否不好,甚至语义不好。
谢谢帮助! :-)
#include <stdio.h>
#include <stdlib.h>
#define ASCIIstart 65
#define ASCIIend 90
void main(){
FILE *fopen(), *fp;
int c;
unsigned int sum;
fp = fopen("text.txt","r");
printf("Characters found in text: \n");
for (int i = ASCIIstart; i <= ASCIIend; i++){
sum = 0;
c = toupper(getc(fp));
while (c != EOF){
if (c == i){
sum = sum++;
}
c = toupper(getc(fp));
}
if (sum > 0){
printf("%c: %u\n",i,sum);
}
}
fclose(fp);
}
【问题讨论】:
-
如果您使用库函数
isalpha,您将不必担心硬编码幻数或大小写。你需要#include <ctype.h> -
你为什么要
sum = sum++;?你不觉得sum++就够了吗? -
你在说什么神奇的数字?抱歉,我是 C 编程的小菜鸟:/ - 这是学校的习惯,我们必须在 Pascal 中使用它
-
你为什么要声明 fopen() ?
-
你不认为你的 for 循环应该在 while 循环内部而不是在外部吗?
标签: c character text-files counter toupper