首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不读取文件

不读取文件
EN

Stack Overflow用户
提问于 2018-01-12 08:30:22
回答 1查看 321关注 0票数 0

我试着从我的txt文件中读取一些输入,但我不知道它为什么不读.我做错什么了?

文件内容:31.0 0.05 0.2 0.5

功能如下:

代码语言:javascript
复制
float * le_dados_ficheiro(char *nomeFich,int *nMoedas, float *valor)
{
   FILE    *f;
   float *p,*q;
   int     i;

   f = fopen(nomeFich,"r");
   if(!f)
   {
       printf("Erro ao abrir ficheiro %s\n",nomeFich);
       exit(1);
   }

   fscanf(f," %d %f",nMoedas,valor);//**It is empty after this**

   p = malloc(sizeof(float)*(*nMoedas));
   if(!p)
   {
       printf("Erro ao reservar memoria ... \n");
       exit(1);
   }

   q = p;
   for(i = 0; i < *nMoedas; i++)
       fscanf(f," %f",q++);

   fclose(f);

   printf("%f -  %f  - %f",q[0],q[1],q[2]);//**Still empty**
   return q;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 08:47:39

您只是在这里打印错误的数据:

代码语言:javascript
复制
printf("%f -  %f  - %f", q[0], q[1], q[2]);

q指向数组结束后的位置。你需要打印p

代码语言:javascript
复制
printf("%f -  %f  - %f", p[0], p[1], p[2]);

否则,提供文件的确切内容的程序工作如下:

代码语言:javascript
复制
3 1.0
0.05 0.2 0.5

有错误检查的正确代码:

代码语言:javascript
复制
float *le_dados_ficheiro(char *nomeFich, int *nMoedas, float *valor)
{
  FILE  *f;
  float *p, *q;
  int i;

  f = fopen(nomeFich, "r");
  if (!f)
  {
    printf("Erro ao abrir ficheiro %s\n", nomeFich);
    exit(1);
  }

  if (fscanf(f, " %d %f", nMoedas, valor) != 2)
  {
    printf("Wrong  file format ... \n");
    exit(1);
  }

  p = malloc(sizeof(float)*(*nMoedas));
  if (!p)
  {
    printf("Erro ao reservar memoria ... \n");
    exit(1);
  }

  q = p;
  for (i = 0; i < *nMoedas; i++)
  {
    if (fscanf(f, " %f", q++) != 1)
    {
      printf("Wrong  file format ... \n");
      exit(1);
    }
  }

  fclose(f);

  printf("%f -  %f  - %f", p[0], p[1], p[2]);
  return q;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48222279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档