我有一个文件,其结构如下:
var1 2921
var2 0.5
var3 12
我需要一个方法来获取文件的名称和3个空变量。它应该读取文件并为每个变量赋予值。 (这是我到目前为止所尝试过的)
void get_input(char * filename, int * var1, double * var2, int * var3){
FILE *file;
char buf[1024];
file=fopen(filename,"r");
if(file == NULL){
printf("ERROR");
exit(0);
}
int i=0;
if(file){
while(fgets(buf,sizeof(buf),file)!=NULL){
switch(i){
case 0:
sscanf(buf,"var1 %d",&var1);
break;
case 1:
sscanf(buf,"var2 %f",&var2);
break;
case 2:
sscanf(buf,"var3 %d",&var3);
break;
default:
break;
}
i++;
}
}
}
main :
int main()
{
char filename[256];
int var1,var3;
double var2;
snprintf(filename,256,"file.txt");
get_input(filename,&var1,&var2,&var3);
printf("%s %d","var1: ",var1);
printf("%s %f","\nvar2: ",var2);
printf("%s %d","\nvar3: ",var3);
return 0;
}
输出:
var1:8
var2:0.000000
var3:2011837489
答案 0 :(得分:3)
对于double,您需要使用%lf
,而不是%f
;在scanf
以及printf
中。或者,您可以使用float
,%f
。
您正在传递var1,2,3的地址;因此,在scanf中再次获取地址是重复的 - 您将获得该地址的地址
在var1
。
&var1
代替scanf
醇>