Почему программа-счетчик isalpha () выдает неправильный вывод? C - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь запустить простую программу, которая читает файл и возвращает контекст и количество буквенных символов. Я получаю неправильный вывод.

#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.

1 Ответ

3 голосов
/ 26 февраля 2020

Переменная sum не инициализируется нулем. Поэтому он инициализируется случайным значением (которое зависит от того, какое значение находится в его месте.

Чтобы исправить, измените строку на

int sum = 0;

Другие ошибки, указанные в к комментариям также следует прислушиваться, но до тех пор, пока не будет зафиксирована инициализация суммы, вы можете ожидать сумасшедших бессмысленных итогов.

...