首页 > 解决方案 > 为什么 isalpha() 计数器程序给出错误的输出?C

问题描述

我正在尝试运行一个简单的程序来读取文件并返回上下文和字母字符的数量。我得到一个错误的输出。

#include <stdio.h>
#include <ctype.h>
int main()
{
    FILE *f;
    char path[100],c;
    int sum;

    printf("\nGive file's path: \n");
    scanf("%s",&path);

    f=fopen(path,"r");

    if(f==NULL){
        printf("\nFile not found.\n");
        return -1;}

    while(!feof(f)){
    c=fgetc(f);
    putchar(c);
    if (isalpha(c)!=0){
        sum++;}
    }
    printf("\n\n %d Alphabetical characters found.\n\n",sum);
    fclose(f);
    return 0;
}

文件的上下文是:12345 abz 12345 ABZ 我应该得到上下文和数字 6。而不是我得到这个:

12345 abz 12345 ABZ
�

 4772675 Alphabetical characters found.

标签: cfileisalpha

解决方案


变量sum未初始化为零。所以它是用一个随机值初始化的(这取决于它所在位置的任何值。

要修复,请将行更改为

int sum = 0;

还应注意评论中指出的其他错误,但在总和的初始化得到修复之前,您可能会得到疯狂的胡说八道的总数。


推荐阅读