2016-10-16 7 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'은 unintialised이다. 2. 정수가 아닌 ASCII 문자를 읽는 중입니다. 요약하기 전에 문자/문자열에서 읽은 것을 정수로 변환해야합니다. – kaylum

+0

고정! 고맙습니다. @pfannkuchen_gesicht :) –

답변

1

첫 번째 getc 정수가 아닌 파일에서 문자를 읽는 기능입니다. 당신은 fscanf을 사용할 수 있습니다

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

putchar가 인쇄되지 않는 문자하지 intgers하는 기능이 있습니다. 은 그래서 당신은 쓸 필요가 :

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

printf는 변경해야 할 모든 것 같습니다. 감사! –

+0

당신은 환영합니다. –

+0

@levijoraan 실제로 정확한 결과와 예상 된 결과에 관심이 있다면 scanf() 변경이 필요합니다. –