gpt4 book ai didi

通过 shell 执行 "cat"的 C 文件操作

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:10 24 4
gpt4 key购买 nike

[编辑] - 正如下面的回复所述,答案是我应该使用 fclose 而不是 close。

C 库的 system() 函数对我来说表现异常。下面是错误的玩具示例。

我有一个包含三行数据的数据文件“file_2.txt”

file 2 line 1
file 2 line 2
file 2 line 3

以下 C 程序将此数据附加到 file_1.txt,一个在程序中构建的文件

#include <stdio.h>
#include <stdlib.h>

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

FILE *fname = fopen("file_1.txt","w");

fprintf(fname,"file 1 line 1\n");
fprintf(fname,"file 1 line 2\n");
fprintf(fname,"file 1 line 3\n");
fprintf(fname,"file 1 line 4\n");
fprintf(fname,"file 1 line 5\n");

close(fname);

system("cat file_2.txt >> file_1.txt");
system("cat file_1.txt");
}

我希望输出是

file 1 line 1
file 1 line 2
file 1 line 3
file 1 line 4
file 1 line 5
file 2 line 1
file 2 line 2
file 2 line 3

但我只是得到

file 2 line 1
file 2 line 2
file 2 line 3

file_1.txt 的行发生了什么变化?

最佳答案

使用 fclose(fname) 而不是 close(fname)close() 函数需要一个文件描述符,它是一个整数而不是FILE *fclose() 函数是您需要用来关闭用 fopen() 打开的文件的函数。

关于通过 shell 执行 "cat"的 C 文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23400831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com