【发布时间】:2021-07-28 21:52:52
【问题描述】:
#include <stdio.h>
#include <cstdio>
int main(int argc, char* argv[]) {
char buff[512];
int desc;
int lb;
desc = open(argv[1], O_WRONLY);
if(desc == -1) {
perror("error");
exit(1);
}
while(lb=fgets(buff,512,stdin) > 0) {
write(desc,buff,lb);
}
}
在 linux 上的 C 中,我必须使用 fgets() 从用户编写的终端写入作为 argv 文本传递的文件。程序应该在循环中工作,如果用户写“结束”,程序就会停止。 我猜现在程序将从标准输入写入文件文本,不确定如何在“结束”条件下结束程序。
【问题讨论】:
-
欢迎来到 SO。你可能想看看
strcmp()和write() -
也许
fopen(参见示例)比open更适合编写文本文件。 -
不确定如何从终端获取文本到缓冲区
-
注意:
open()是一个非常低级的调用,除非您对无缓冲 IO 有非常特殊的要求,否则不应使用它。请改用fopen()和FILE*。 -
警告:除非您绝对确定
n < argc是真的,否则不要引用argv[n]。你将使用一个无效的指针。