使用fscanf读取复杂的格式字符串

时间:2016-04-10 15:26:06

标签: c formatting scanf

我有一种复杂的文件格式:

     main(){

     FILE* in=fopen("fr.N.bien2","r");
     int maxwords=100;
     int maxstringlen=100;

     char* nodes=malloc(sizeof(char)*maxstringlen*maxwords);
     if(!nodes){printf("Nodes couldn't be allocated!\n");}

     int i=0;

     int* IDs=malloc(sizeof(int)*3*maxwords);
     int docnum,nei,rank;
     float score;
     char* pzero;
     while(fscanf(in," { \"color\": [ 45, 200, 34 ], \"docnum\": %i,      \"form\": %s \"graph\": \"jdm.N.flat\", \"id\": %i , \"lang\": \"fr\",  \"neighbors\": %i , \"pos\": \"N\", \"pzero\": false, \"rank\": %i , \"score\": %f , \"type\" :1  },",&docnum,&nodes[i],&IDs[i],&nei,pzero,&rank,&score))
    {
         printf("node:%s,ID=%i\n",&nodes[i],IDs[i]);
         i++;
   }
   }

此类列表继续进行,数百个条目。我想读变量数字和字符串(docnum,form,id,neighbors,rank,score),所以我为这种输入创建了一个格式字符串:

>>node:"avoir",,ID=0

它看起来很复杂,但似乎工作正常,因为我得到了第一个实例。输出是:

document.getElementById("radio").innerHTML = "Change text to this";

但是,输出会停止,即使格式在文件中正好重复(如示例中所示)。 我错过了一些重要的东西吗? 是否有更简单的方法从这样的文件中读取此类数据?

0 个答案:

没有答案