如何将用户输入的特定行打印到控制台(C++)

How to print out specific lines of user input to console (C++)

本文关键字:打印 控制台 C++ 用户 输入      更新时间:2023-10-16

我正在使用c++和终端。因此,我的程序使用read(STD_FILENO,buf,BUFFER接收用户输入,并且我试图只写回特定的行。

例如,如果用户总共输入了10行,我将如何打印第3行到第7行或第6行到第10行?

我正在尝试使用write()函数(write(STD_FILENO,buf,BUFFER)),但它没有打印出我想要的内容。
我试过摆弄BUFFER,并试图使其小于用户输入的字符总数,但它仍然不起作用。

我的理解是,无论我说BUFFER是什么,它都会写到那个BUFFER值,所以它会从0开始到BUFFER。但如果我想从第6行开始,那可能从字符#15开始,而不是从0开始…这有意义吗?

请注意:我需要使用read()write()

谢谢!

如果只要求使用read(2)和write(2。使用它们中每一个的结果。处理代码中的错误案例。请参阅errno(3)&perror(3)。

因此,保留一个缓冲区(或多个)和几个指针或偏移量(可能至少是当前消耗的位置和最后一个read位置,等等)。

也许你会想要使用一些容器。您可以开始在缓冲IO类上实现自己的等效fgetc,并在此基础上进行构建。

行实际上并不存在于系统调用级别。您需要在代码中处理n

顺便说一句,你可以研究几个实现<stdio.h>的自由软件C库的源代码,比如musl-libc-

当然,您应该使用所有警告和调试信息(g++ -Wall -Wextra -g和GCC)进行编译,并且您需要使用调试器gdb来了解程序的行为并查找错误。不要害羞地在黑板上画出虚拟地址空间中发生的事情(用箭头表示指针)。

注意:SO不是一个做家庭作业服务。