扫描文件和计数值时出现分段错误



我正在扫描一个文件,并计算有多少字母是大写、小写、数字或其他字符;这是我分割错误的原因;我不太确定为什么这是我的代码

#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, ...);

相关内容

  • 没有找到相关文章

最新更新