c - 从 .txt C 读取

标签 c scanf

我在使用 C 语言时遇到了一些问题..

我有一个 txt 文件,其中包含以下形式的各行:

F   65  S   4   1   139.56  3704.26

和我的程序:

p = fopen("dados.txt", "r");

if ( p == NULL) {
    printf("\n\nNao foi possivel abrir o arquivo.\n");
    exit(1);
}else{
      while ( !feof(p) ){
      fscanf(p,"%c %d %c %d %d %f %f",
          &sexo,&idade,&estadoCivil,&numFilhos,&freq,&mediaGasto,&mediaSalarial);

      printf("%c %d %c %d %d %f %f\n",
          sexo,idade,estadoCivil,numFilhos,freq,mediaGasto,mediaSalarial);
      }

返回结果是:

enter image description here

看起来很糟糕...

如果我将 fscanf 更改为:%c 到 %f

返回是:

enter image description here

看起来不错,但变量 idade 始终为 0...:S

我必须做什么?

最佳答案

您必须将换行符添加到 scanf 调用中:

  fscanf(p,"%c %d %c %d %d %f %f\n",
      &sexo,&idade,&estadoCivil,&numFilhos,&freq,&mediaGasto,&mediaSalarial);

如果 scanf 中没有换行符,第一行将是正确的,但下一行将输入中的换行符分配给 sexo

关于c - 从 .txt C 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467031/

相关文章:

c - Malloc 示例因 qsort 崩溃?

c - 如何在C中分配矩阵行中的字母

c - (char *)0 在c中是什么意思?

有人可以解决这个代码块吗?

c - 使用 scanf 读取格式化输入

c - 电路的二叉树

c - 为什么我的值(value)不会增加?内存踩踏/堆栈故障?

c - 在 C 中使用可变参数函数进行字符串连接

c - 如何读取文件直到倒数第二行

c - 查找重复整数的数组问题