C:fscanf多次调用不起作用

时间:2018-11-12 22:47:02

标签: c scanf

我尝试读取文本文件中的differents值: 这是我的文件:

4,3
30.0
20.0
1.0

我的输出适用于第一行,通过一个fscanf调用,我可以分别获得4和3。但是然后当我想再次调用fscanf以获取双精度时,它返回0但我想要30.0!

我的代码在这里:

int* read_size(FILE* f) {
  int*  taille;
  fscanf(f, "%d,%d", &taille[0], &taille[1]);
  return taille;
}

int read_int(FILE* f) {
  int i;
  fscanf(f, "%d", &i);
  return i;
}

double read_double(FILE* f) {
  double d;
  fscanf(f, "%lf", &d);
  return d;
}

FILE* getFile() {
  char* fileName = "1.conf";
  FILE* f = fopen(fileName, "r");
  return f;
}



 int main( int argc, char *argv[]) {
      FILE* f = getFile();
      int* taille = read_size(f);
      printf("maitre : taille[0] : %d, taille[1] : %d\n", taille[0], taille[1]);
      double temperature = read_double(f);
      printf("maitre : lecture de temperature %2f\n", temperature);  
}

1 个答案:

答案 0 :(得分:0)

int* taille;保留用于指针的空间,但不保留实际值。 读入指针任意指向的值会产生不确定的行为。

解决此问题的最简单方法是改为编写static int taille[2]。 然后其余的应该工作正常。