0

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

4

1 回答 1

2

继续评论。当你声明一个数组时,例如:

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

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

您需要您的函数做的就是打开一个文件进行写入,在写入数组元素之前写入所需的任何文本,写入数组元素,然后写入所需的任何关闭格式。一个可以帮助您的快速示例可能如下所示,其中数组值被写入命令行上提供的文件名(或“jsonout.txt”默认值):

#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 ] }

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

于 2015-11-13T08:08:35.287 回答