2016-10-16 1 views
0

Используя C, я пытаюсь суммировать числа в файле. Файл содержит номера, такие как:Пытается суммировать значения из текстового файла, получая нераспознанный символ в качестве вывода?

123 
456 
788 
... 
356 

При выполнении кода, он правильно запрашивает для ввода и печатает номер я вхожу. Однако он не суммирует файл и просто отображает непризнанный символ символа, как маленький?. Я не думаю, что этот номер находится над выделенным INT_MAX_SIZE. Какая проблема?

#include <stdio.h> 

main() { 

    //Number variable to assign each line to 
    int c; 
    int fds[2]; 
    int childid; 
    int size; 
    int number; 
    int sum; 

    printf ("Enter the number of processes to create: "); 
    scanf ("%d", &number); 
    printf ("You entered: %d", number); 
    printf("\n"); 

    //File I/O operations 
    FILE *file; 

    //Open file for reading 
    file = fopen("Project1_OS/project1_data/file1.dat", "r"); 

    //If file is found 
    if (file) { 
     //While file has data to be read 
     while ((c = getc(file)) != EOF) 
      //Print data 
      //putchar(c); 
      sum+=c;   


    //Close the file I/O 
    fclose(file); 
    } 
    putchar(sum); 

} 
+0

putchar не работает. вам нужен printf вместо –

+1

1. 'sum' не инициализирован. 2. Вы читаете символы ascii, а не целые числа. Вам нужно преобразовать то, что вы читаете из символов/строк, в целые числа перед суммированием. – kaylum

+0

Исправлено! Спасибо @pfannkuchen_gesicht :) –

ответ

1

первая getc это функция для чтения символов из файла, а не целых чисел. вы должны использовать fscanf:

fscanf(file,"%3d",&c) 

второй putchar это функция для печати символов не intgers. , поэтому вам нужно будет написать:

printf("%d",sum); 
+0

Кажется, printf - это все, что нужно было изменить. Благодаря! –

+0

приветствуется :) –

+0

@levijoraan на самом деле вам нужно изменить scanf(), если вам нужны точные и ожидаемые результаты. –

Смежные вопросы