我正在为使用数组在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++;
}
}
答案 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]);
这看起来是正确的。