繁体   English   中英

为什么 isalpha() 计数器程序会给出错误的输出? C

[英]Why does isalpha() counter program gives wrong output? 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.

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

要修复,请将行更改为

int sum = 0;

评论中指出的其他错误也应该注意,但是在总和的初始化被修复之前,你可能会得到疯狂的无意义的总数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM