在開發(fā)中,有時需要合并兩份json文件的數(shù)據(jù),在c語言中如何實現(xiàn)呢?下面我們就來看一下具體的方法。
#include#include #include #include #include #include #include #include #define BUFSIZE 1024 int main(int argc, char **argv) { int fd1, fd2; char buf1[BUFSIZE], buf2[BUFSIZE]; char *filename1, *filename2, *filename3; struct stat statbuf; ssize_t len1, len2; if (argc != 4) { perror("usage: program filename1 filename2 filename3"); exit(EXIT_FAILURE); } filename1 = argv[1]; filename2 = argv[2]; filename3 = argv[3]; fd1 = open(filename1, O_RDONLY); if (fd1 == -1) { perror("open file1 error"); exit(EXIT_FAILURE); } fd2 = open(filename2, O_RDONLY); if (fd2 == -1) { perror("open file2 error"); exit(EXIT_FAILURE); } if (stat(filename1, &statbuf) == -1) { perror("get file1 stat error"); exit(EXIT_FAILURE); } if (S_ISDIR(statbuf.st_mode) || !(S_ISREG(statbuf.st_mode))) { perror("file1 is not a regular file"); exit(EXIT_FAILURE); } if (stat(filename2, &statbuf) == -1) { perror("get file2 stat error"); exit(EXIT_FAILURE); } if (S_ISDIR(statbuf.st_mode) || !(S_ISREG(statbuf.st_mode))) { perror("file2 is not a regular file"); exit(EXIT_FAILURE); } len1 = read(fd1, buf1, BUFSIZE); if (len1 == -1) { perror("read file1 error"); exit(EXIT_FAILURE); } len2 = read(fd2, buf2, BUFSIZE); if (len2 == -1) { perror("read file2 error"); exit(EXIT_FAILURE); } // 打開文件3,如果不存在則創(chuàng)建 int fd3 = open(filename3, O_WRONLY | O_CREAT, 0666); if (fd3 == -1) { perror("open file3 error"); exit(EXIT_FAILURE); } // 寫入文件1的內(nèi)容 if (write(fd3, buf1, len1) == -1) { perror("write file1 error"); exit(EXIT_FAILURE); } // 寫入文件2的內(nèi)容 if (write(fd3, buf2, len2) == -1) { perror("write file2 error"); exit(EXIT_FAILURE); } close(fd1); close(fd2); close(fd3); return 0; }
以上就是使用c語言合并兩份json文件的具體代碼。代碼中首先打開兩個文件并讀取其內(nèi)容,在合并時需要創(chuàng)建一個新的文件,并將兩個文件的內(nèi)容寫入其中即可。需要注意的是,在操作文件時,我們應該先判斷文件是否存在,并且是普通文件,否則可能會出現(xiàn)文件打開失敗的問題。