如何将fscanf整数从文件转换为C中的数组?

时间:2017-11-05 23:42:38

标签: c arrays pointers

我正在为使用数组在C类中进行编程做一个赋值,使用fscanf从文件中获取整数然后打印它们。代码将构建,但是当我运行它时,程序在第31行的Display函数期间停止工作。它给出的错误是“在Project 6.exe中0x00CE50F1处抛出异常:0xC0000005:访问冲突写入位置0x00F4D720。”我确定我对数组做了一些错误,因为我的教授在打印和扫描时将数组写成“array [count]”而不是“array [& count]”,但如果我把它写成视觉工作室那么强调“ count“并说”表达式必须具有指针对象类型“。我不是想作弊,我想知道什么是错的,我怎么能让它发挥作用。

   #define CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int Greeting();
void Display(numchosen, Numptr, array);

int main() {
    int numchosen, array[20];
    FILE * Numptr;

    Numptr = fopen("numInput.txt", "r");
    numchosen = Greeting();
    Display(numchosen, &array, Numptr);
}

int Greeting() {
    int numchosen;

    printf("How many integers should I retreive from the file? (1-20)\n");
    scanf("%d", &numchosen);

    return numchosen;
}
void Display(numchosen, array, Numptr) {
    int numprinted, numnum = 1, currentnum, count=0;


    for (numprinted = 0; numprinted < numchosen; numprinted++) {


        fscanf(Numptr, "%d", &array[&count]);
        printf("%d. %d\n", numnum, array[&count]);

        numnum ++;
        count++;
    }
}

1 个答案:

答案 0 :(得分:0)

声明您的参数类型!

void Display(numchosen, array, Numptr)

shoud read

void Display(int numchosen, int *array, FILE * Numptr)

注意你的类型!

    fscanf(Numptr, "%d", &array[&count]);
    printf("%d. %d\n", numnum, array[&count]);

永远不要按某事的地址索引。这是一种类型不匹配。

    fscanf(Numptr, "%d", &array[count]);
    printf("%d. %d\n", numnum, array[count]);

这看起来是正确的。