C、 正在将文件元素读入数组,错误的访问代码
我正在编写一个程序,从一个文件中读取30个数字,将它们存储在一个数组中,然后将该数组传递给一个函数,该函数将只打印该数组中的偶数。但是,我的while语句中出现了错误的访问代码 有什么建议吗?提前谢谢C、 正在将文件元素读入数组,错误的访问代码,c,arrays,file,C,Arrays,File,我正在编写一个程序,从一个文件中读取30个数字,将它们存储在一个数组中,然后将该数组传递给一个函数,该函数将只打印该数组中的偶数。但是,我的while语句中出现了错误的访问代码 有什么建议吗?提前谢谢 #include <stdio.h> void even(int numbers[]); int main(int argc, const char * argv[]) { FILE *file = fopen("input.txt", "r"); if (fi
#include <stdio.h>
void even(int numbers[]);
int main(int argc, const char * argv[]) {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
printf("error");
}
int numbers[30];
int num = 0;
int i = 1;
while(fscanf(file, "%d,", &num) > 0) {
numbers[i] = num;
i++;
}
fclose(file);
even(numbers);
return 0;
}
void even(int numbers[]){
for (int i = 0; i < 30; i++) {
if (numbers[i] %2 == 0) {
printf("%d", numbers[i]);
}
}
}
#包括
空偶数(整数[]);
int main(int argc,const char*argv[]{
FILE*FILE=fopen(“input.txt”,“r”);
if(file==NULL){
printf(“错误”);
}
整数[30];
int num=0;
int i=1;
而(fscanf(文件“%d”,&num)>0){
数字[i]=num;
i++;
}
fclose(文件);
偶数;
返回0;
}
空偶数(整数[]){
对于(int i=0;i<30;i++){
如果(数字[i]%2==0){
printf(“%d”,数字[i]);
}
}
}
您的代码主要有3.5个问题
while
循环中以i=1
开始
int i = 1;
/* ^ this should be 0 */
while(fscanf(file, "%d,", &num) > 0)
由于您从1
开始,因此0
第th个元素未初始化,但您仍然尝试在even()
中读取它(先读后写),这会导致未定义的行为i
的值是否不超过数组中的元素数30
个元素,即使您的读取量可能小于此值,您必须计算成功读取的元素总数,并将该数字传递给偶数()
,或者至少将数组初始化为0
sfscanf()
成功,则返回匹配的元素数。这不会导致代码中出现问题,但绝对是错误的int i = 0;
while ((fscanf(file, "%d,", &num) == 1) && (i < 30))
inti=0;
而((fscanf(文件,“%d,”,&num)=1)和&(i<30))
及
void偶数(整数[],大小\u t计数){
for(int i=0;i
不要编写无法重用的函数,这毫无意义。
while(fscanf(file,“%d,,&num)>0)
完全错误。请阅读。printf(“错误”)代码>-->printf(“错误”);返回-1当输入文件包含意外字符时,code>fscanf将返回零。
void even(int numbers[], size_t count) {
for (int i = 0 ; i < count ; i++) {
if (numbers[i] %2 == 0) {
printf("%d", numbers[i]);
}
}
}