gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:12:45 25 4
gpt4 key购买 nike

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

{
"color": [
45,
200,
34
],
"docnum": 5183,
"form": "avoir",
"graph": "jdm.N.flat",
"id": 0,
"lang": "fr",
"neighbors": 17,
"pos": "N",
"pzero": true,
"rank": 1,
"score": 0.0028284271,
"type": 1
},
{
"color": [
45,
200,
34
],
"docnum": 22809,
"form": "argent",
"graph": "jdm.N.flat",
"id": 1,
"lang": "fr",
"neighbors": 65,
"pos": "N",
"pzero": false,
"rank": 2,
"score": 0.0028284271,
"type": 1
},

这样的列表不胜枚举,有数百个条目。我想读取变量数字和字符串(docnum、form、id、neighbors、rank、score),因此我为此类输入创建了一个格式字符串:

     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++;
}
}

它看起来很复杂,但似乎很有效,因为我的第一个实例是正确的。输出为:

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

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

最佳答案

这个复杂的格式是 JSON

正如评论所建议的,请寻找一个库(可以在前面的链接中找到它们),有很多库并且也适用于不同的语言。

事实上,您的问题可能已经得到解答 here

关于c - 使用 fscanf 读取复杂格式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com