怎么用 C/C++ 把结构体数组转成 JSON串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用 C/C++ 把结构体数组转成 JSON串相关的知识,希望对你有一定的参考价值。

用CSTRING的GetBuffer函数返回一个存放字符的头指针,用一个CHAR *来接受他,然后用下标操作就可以了。
例如:char * ptr = str.GetBuffer();
定义一个数组来接受各个字符
cahr array[10]="0";
char array[0]=ptr[0];
char array[1]=ptr[1];
也可以用一个循环,这样ARRAY数组就保存了CSTRING中的各个字符.
参考技术A 通常都是用eval()函数来进行转换的, 例如:var sJson = 'a: 1';var o = eval('(' + sJson + ')');alert(o.a);如果是数组的话 也是类似的,在字符串两边各加上一个小括号 然后用eval()函数将其转换为数组,再赋值给某个变量,就可以直接使用了。 参考技术B 将数组下标 当做index 将数据的内容 当做value 参考技术C 推荐开源代码cjson或者jsoncpp 参考技术D 可以使用相关的json库

C语言 怎么把文件中的信息储存到结构体数组中

要把这个文件中的数据保存到结构体数组中

我是这么写的

输出为什么是这个

总体写得不错,问题出在你的

fscanf和fprintf函数参数传递错误了

#include "stdio.h"
#include "stdlib.h"
struct s

  int id;
  char name[10];
  int co1;
  int co2;
  int co3;
  int co4;
;
int main()

   int i=0,count;
   struct s st[10];
   char fname[10],ch;
   FILE *infile,*outfile;
   printf("please input data file name:\\n");
   scanf("%s",fname);
   infile=fopen(fname,"r");
   outfile=fopen("output.txt","w");
   if(infile==NULL)
   
     printf("\\nFailed to open the file");
 exit(1);
   
   fscanf(infile,"%d",&count);
   while(i<count)
   
     fscanf(infile,"%d %s %d %d %d %d\\n",&(st[i].id),st[i].name,&(st[i].co1),&(st[i].co2),&(st[i].co3),&(st[i].co4));
 fprintf(outfile,"%d %s %d %d %d %d\\n",st[i].id,st[i].name,st[i].co1,st[i].co2,st[i].co3,st[i].co4);
     i++;
   
   fclose(infile);
   fclose(outfile);

首先,你的name是结构体中的字符数组,fscanf要传入的应该是存储字符的地址,所以直接是数组名name就行


第二,fprintf你要写入文件的数据,应该是真正的数据本身,不是数据的地址,所以应该将变量前的取地址符全去掉就好,


第三,注意加好换行符\\n


结果:

text.txt中内容就是output.txt中的内容

参考技术A 你用了地址运算符&,输出的应该是各个数据的存储地址。

以上是关于怎么用 C/C++ 把结构体数组转成 JSON串的主要内容,如果未能解决你的问题,请参考以下文章

C++/CLI下使用结构体数组的问题

c/c++结构体,循环输入有问题,求指导

C语言 怎么把文件中的信息储存到结构体数组中

C语言结构体指针定义问题 - C / C++ -

c语言共用体包含一个数组成员,我要对这个数组成员进行赋值,一定要一个一个的赋值么?不能写在花括号

C语言中怎样用链表保存结构体数据(动态数据结构)