我在使用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);
}
回报是:
看起来很糟糕......
如果我将fscanf:%c更改为%f
回报是:
看起来很棒,但变量idade总是0 ......:S
wtf我必须做什么?
答案 0 :(得分:4)
您必须在scanf
电话中添加换行符:
fscanf(p,"%c %d %c %d %d %f %f\n",
&sexo,&idade,&estadoCivil,&numFilhos,&freq,&mediaGasto,&mediaSalarial);
如果scanf
中没有换行符,则第一行将是正确的,但以下行会将输入中的换行符分配给sexo
。