我正在扫描一个文件,并计算有多少字母是大写、小写、数字或其他字符;这是我分割错误的原因;我不太确定为什么这是我的代码
#include<stdio.h>
#include<ctype.h>
int main(void)
{
FILE *ifp, *ofp;
char *mode = "r";
char words;
int lengthOfWords, i;
int uppercase=0, lowercase=0, digits=0, other=0, total=0;
ifp = fopen("story.txt", "r");
if (ifp == NULL) {
fprintf(stderr, "Can't open input file in.list!n");
return 0;
}
else
{
while(fscanf("%c", &words) != EOF)
{
if ((words>='A')&&(words<='Z'))
{
uppercase++;
}
else if ((words>='a')&&(words<='z'))
{
lowercase++;
}
else if ((words>='0')&&(words<='9'))
{
digits++;
}
else
{
other++;
}
}
}
printf("n%d %d %d %dn",uppercase, lowercase, digits, other );
return 0;
}
为什么我只是一个字符一个字符地读它,并计算它们的数量
这是我的TXT文件。The quick Fox jumps
over 2014 *$!&#@] lazy dogs.
您忘记传递FILE
(流指针)作为fscanf
函数的参数:
while (fscanf(ifp, "%c", &words) != EOF)
根据男人的说法,fscanf
的签名是:
int fscanf(FILE *restrict stream, const char *restrict format, ...);