sách gpt4 ai đã đi

c - 如何从终端用 C 语言逐行读取文件?

In lại 作者:太空宇宙 更新时间:2023-11-04 03:18:57 37 4
mua khóa gpt4 Nike

我读过我可以使用 fopen 逐行读取文件,但我想从终端访问文件。这是我尝试过的:

$ ./myprogram < input.txt > output.txt

我不确定是否可以使用 scanf 或其他方式来完成此操作?

1 Câu trả lời

在这里,如果你想一想你在做什么,你只是不断地从 tiêu chuẩn 读取并将相同的字节写入 đầu ra chuẩn 直到你收到一个 Cuối cùng 。虽然您可以使用面向字符的方法(例如 getchar),但使用固定长度缓冲区的读取将显着减少读取和写入的次数。

简单地声明一个合适大小的缓冲区,1024(或者使用提供的默认BUFSIZ,在 Linux 上通常是 8192512 在 windoze 上)。然后重复调用 fgets,一次读取缓冲区中的字符,并使用 fputs 将它们写回 đầu ra chuẩn。就这么简单。

#include 

#define BUFSZ 1024

int main (void) {

char buf[BUFSZ] = "";

while (fgets (buf, BUFSZ, stdin))
fputs (buf, stdout);

trả về 0;
}

理想情况下,您希望缓冲区大小刚好比最长的行长,尽管它的大小并不重要。您可以一次读取每一行,也可以多次调用 fgets。唯一的区别是函数调用的次数。

关于c - 如何从终端用 C 语言逐行读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413895/

37 4 0
Bài viết được đề xuất: c - VS 2017 + cmake + 忍者 + mingw
Bài viết được đề xuất: javascript - Node js Stripe 收到未知参数 : dob
Bài viết được đề xuất: javascript - 预期 "payload"是一个普通对象 : MEAN
Bài viết được đề xuất: c - 使用 pow 时如何避免浮点异常?
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com