我有一个文件其结构如下:如何在此上下文中正确使用sscanf?
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++;
}
}
}
而且主要:
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
v AR3:2011837489
为什么'buf [strlen(buf)-1] ='\ 0';'? – qPCR4vir
一个问题是你不检查'sscanf()'的返回值,所以你不知道它何时失败。 –
另一个是,如果'fopen'失败,你会从未初始化的变量报告,但没有告诉。 –