我正在尝试从多个以'numbers'开头的文本文件中读取数字并计算总和。我正在打开的文件中包含一些随机数。我曾尝试将数组初始化为0,但是这会使输出全部变为0。我认为这是问题部分
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
DIR *d;
struct dirent *dir;
int fileAndSum(){
int sum = 0, i = 0;
int nums[100];
FILE* fptr = fopen(dir->d_name,"r");
fputs("11111111111111111", fptr);
for(i = 0; i <10; i++){
fscanf(fptr,"%d", &nums[i]);
printf("%d\n", nums[i]);
sum+=nums[i];
}
printf("%s\n", "----------sum--------------");
printf("%d\n", sum);
fclose(fptr);
其余
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
DIR *d;
struct dirent *dir;
int fileAndSum(){
int sum = 0, i = 0;
int nums[100];
FILE* fptr = fopen(dir->d_name,"r");
for(i = 0; i <10; i++){
fscanf(fptr,"%d", &nums[i]);
printf("%d\n", nums[i]);
sum+=nums[i];
}
printf("%s\n", "----------sum--------------");
printf("%d\n", sum);
fclose(fptr);
}
int main(void) {
d = opendir("numdir");
char strhold[50] = "numbers";
char fileName[50];
while ((dir = readdir(d)) != NULL) {
printf("%s\n", dir->d_name);
if(strstr(dir->d_name, strhold)){
printf("%s%s%s\n", "----------Now reading ",dir->d_name,"--------------");
fileAndSum();
printf("%s\n", "----------Next file--------------");
}
}
closedir(d);
return(0);
}
您要读取的文件位于目录numdir
中,但是您正在尝试读取当前工作目录中的文件。
还应该检查文件打开是否成功。
修复部分
FILE* fptr = fopen(dir->d_name,"r");
应该是
char fileName[1024];
snprintf(fileName, sizeof(fileName), "numdir/%s", dir->d_name);
FILE* fptr = fopen(fileName,"r");
if(fptr == NULL){
puts("open failed");
return 0;
}