如何将写入为 ac 文件的整数数组保存到 JSON 文本文件数组文件中?任何帮助或链接将不胜感激。
问问题
3818 次
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 回答