我是第一次关于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
如何修改代码以便正确读取文本文件?这个问题一直困扰着我,并且非常感谢解决方案!
谢谢!
答案 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++);
}