fprintf没有给出期望的值

问题描述 投票:0回答:1

我正在尝试从多个以'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);
}
c scanf
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.