使用scanf读取C中的文件

时间:2014-02-05 15:37:01

标签: c file scanf

我是第一次关于C的课程,我在编写一个程序时遇到了一些麻烦。这是该计划:

#include <stdio.h> //printf
#include <stdlib.h>

//Prototypes
void readScores(int* scores, int* actualCount);
void displayScores(int* scores, int* actualCount);

int main() {
int arrayCount = 100;
int scores[arrayCount];
int actualCount = 0;

readScores(scores, &actualCount);
displayScores(scores, &actualCount);
}

void readScores(int* scores, int* actualCount) {
    for(int i = 0; i <= 10; i++) {
    *actualCount = *actualCount + 1;
    scanf("%d", scores);
    }
} 

void displayScores(int* scores, int* actualCount) {
    for(int i = 1; i < *actualCount; i++) {
        printf("score %d: \t%d\n", i, *scores);
    }
}

我的目标是简单地从scores.txt文本文件中读取分数,并将它们添加到scores []数组中。我们在这个任务中的目标是更多地了解指针,所以不要试图让我的代码更“高效”或任何东西。

我的问题是当我用

编译代码时
gcc histogram.c -std=c99 -o histogram

并使用

运行它
./histogram <scores.txt

我的输出如下:

score 1: 7
score 2: 7
score 3: 7
score 4: 7
score 5: 7
score 6: 7
score 7: 7
score 8: 7
score 9: 7
score 10: 7

如何修改代码以便正确读取文本文件?这个问题一直困扰着我,并且非常感谢解决方案!

谢谢!

2 个答案:

答案 0 :(得分:1)

由于得分是数组,因此您可以使用多于第一个元素:

void readScores(int* scores, int* actualCount) {
    for(int i = 0; i <= 10; i++) {
    *actualCount = *actualCount + 1;
    scanf("%d", scores + i);  // Read into element i of array scores
    }
} 

void displayScores(int* scores, int* actualCount) {
    for(int i = 1; i < *actualCount; i++) {
        printf("score %d: \t%d\n", i, *(scores + i));  // Print element i of array scores
    }
}

答案 1 :(得分:0)

尝试增加指针的值:

void readScores(int* scores, int* actualCount) {
    for(int i = 0; i <= 10; i++) {
    *actualCount = *actualCount + 1;
    scanf("%d", scores++);
    }
} 

当然也在显示时:

void displayScores(int* scores, int* actualCount) {
    for(int i = 1; i < *actualCount; i++) {
        printf("score %d: \t%d\n", i, *scores++);
    }