从.txt C读取

时间:2011-12-11 20:03:43

标签: 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

wtf我必须做什么?

1 个答案:

答案 0 :(得分:4)

您必须在scanf电话中添加换行符:

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

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