色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 導(dǎo)入導(dǎo)出json格式文件

江奕云1年前8瀏覽0評論

在C語言中,導(dǎo)入導(dǎo)出一些常用的數(shù)據(jù)格式文件是非常需要的,其中一種格式就是JSON(JavaScript Object Notation)格式文件。JSON是一種使用鍵值對存儲數(shù)據(jù)的輕量級數(shù)據(jù)交換格式。在C語言中,我們可以使用第三方庫來實現(xiàn)JSON文件的讀取和寫入操作。

其中一個較為常用的JSON處理庫是 cJSON。它是一個開源的C語言庫,可用于解析JSON數(shù)據(jù)、創(chuàng)建JSON數(shù)據(jù)以及按照JSON格式打印數(shù)據(jù)。下面是一個簡單的例子,展示如何使用 cJSON 庫讀取一個JSON格式文件。

#include <stdio.h>
#include <stdlib.h>
#include <cJSON.h>
int main() {
char* filename = "example.json";
FILE* fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
return 1;
}
fseek(fp, 0, SEEK_END);
long file_size = ftell(fp);
rewind(fp);
char* buffer = (char*) malloc(sizeof(char) * file_size);
if (buffer == NULL) {
printf("Failed to allocate memory.\n");
fclose(fp);
return 1;
}
fread(buffer, 1, file_size, fp);
fclose(fp);
cJSON* root = cJSON_Parse(buffer);
free(buffer);
if (root == NULL) {
printf("Failed to parse JSON data.\n");
return 1;
}
cJSON* name = cJSON_GetObjectItem(root, "name");
cJSON* age = cJSON_GetObjectItem(root, "age");
printf("Name: %s\n", name->valuestring);
printf("Age: %d\n", age->valueint);
cJSON_Delete(root);
return 0;
}

在上面的代碼中,我們首先打開名為“example.json”的JSON格式文件,得到文件大小,為其分配內(nèi)存空間并讀取文件內(nèi)容到內(nèi)存中。然后使用 cJSON_Parse 函數(shù)解析內(nèi)存中的 JSON 數(shù)據(jù),并獲取其中的名稱和年齡信息。最后釋放用于儲存文件內(nèi)容的內(nèi)存空間,并打印獲取到的數(shù)據(jù)。

當然,我們也可以使用 cJSON 庫來創(chuàng)建 JSON 格式文件。下面是一個簡單的例子:

#include <stdio.h>
#include <cJSON.h>
int main() {
cJSON* root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "Tom");
cJSON_AddNumberToObject(root, "age", 18);
char* data = cJSON_Print(root);
printf("%s\n", data);
cJSON_Delete(root);
free(data);
return 0;
}

在上面的代碼中,我們首先使用 cJSON_CreateObject 函數(shù)創(chuàng)建一個空的 JSON 對象,然后向其中添加一個名稱為“name”,值為“Tom”的鍵值對和一個名稱為“age”,值為18的鍵值對。最后,我們使用 cJSON_Print 函數(shù)將創(chuàng)建的 JSON 對象打印成字符串形式,并釋放用于儲存字符串的內(nèi)存空間。

總的來說,在 C 語言中使用 cJSON 庫導(dǎo)入導(dǎo)出 JSON 格式文件非常方便。我們只需要一些簡單的調(diào)用即可完成操作。當然,我們也可以選擇其他的 JSON 處理庫,如 jsmn、json-c 等。