将用C编写的整数数组保存到JSON文本文件数组中

时间:2015-11-13 04:18:17

标签: c json xdr

如何将编写为c文件的整数数组保存到JSON文本文件数组文件中?任何帮助或链接将不胜感激。

1 个答案:

答案 0 :(得分:1)

继续发表评论。声明数组时,例如:

int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };

该数组存在于内存中,您可以将数组传递给输出函数,该函数将以您指定的格式将数组写入文件。将数组传递给函数时,还需要传递数组的大小。作为参数传递给函数的数组变量将转换为指针。转换后,无法确定函数中原始数组的大小。 (一般意义上说)

你需要做的所有事情就是打开一个文件进行编写,在编写数组元素之前编写所需的任何文本,编写数组元素,然后编写所需的任何结束格式。一个帮助您的简单示例可能类似于以下内容,其中数组值写入命令行提供的文件名(或&#34; jsonout.txt&#34; 默认值):< / p>

#include <stdio.h>

void jsonout (char *fname, int *a, size_t sz);

int main (int argc, char **argv) {

    int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
    size_t size = sizeof array/sizeof *array;
    char *file = argc > 1 ? argv[1] : "jsonout.txt";

    jsonout (file, array, size);

    return 0;
}

/* output function to write "{ "array" : [ v1, v2, .... ] }" to 'fname'
 * where v1, v2, ... are the values in the array 'a' of size 'sz'
 */
void jsonout (char *fname, int *a, size_t sz)
{
    size_t i;
    FILE *fp = fopen (fname, "w+"); /* open file for writing */

    if (!fp) {  /* validate file is open, or throw error */
        fprintf (stderr, "jsonout() error: file open failed '%s'.\n", 
                fname);
        return;
    }

    fprintf (fp, "{ \"array\" : [");    /* print header to file */

    for (i = 0; i < sz; i++)            /* print each integer   */
        if (i == 0)
            fprintf (fp, " %d", a[i]);
        else
            fprintf (fp, ", %d", a[i]);

    fprintf (fp, " ] }\n");     /* print closing tag */

    fclose (fp);
}

输出文件

$ cat jsonout.txt
{ "array" : [ 1, 2, 3, 4, 5, 6, 7, 8 ] }

如果您需要进一步的帮助,请告诉我。