如何将用户输入的特定行打印到控制台(C++)
How to print out specific lines of user input to console (C++)
我正在使用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不是一个做家庭作业服务。
相关文章:
- c ++控制台应用程序,如何在控制台外部打印字符
- 控制台打印时间功能产生1
- 如何通过按 F2 或 F3 等键使控制台打印某些内容
- cout 不打印任何内容到控制台
- 如何在 C++ 中将 U32 字符串和 U16string 打印到控制台
- 打印到文件和控制台 C++
- 在 c++ 中打印到控制台的最佳方式是什么?
- 我的控制台正在打印随机单词以及没有执行正确的数学运算
- C++控制台打印在同一行上,带回车符
- 硬编码字符串与强制转换为 PUCHAR 并打印到控制台时从控制台读取的字符串的结果不同
- V8 控制台.log不打印
- 使用 C++ shell 为 C++ 中的 2 D 动态数组赋值,控制台不会打印出任何内容
- cURL 保持打印传输到控制台?
- SDL 未打印到控制台
- qDebug() 在升级到 ubuntu 17.10(和 Fedora)后停止工作(不再打印到控制台)
- 使用具有 UTF8 编码的源文件将 UTF8 符号打印到 Windows 控制台
- 如何在 ATL COM 模块中打印控制台输出
- 打印到控制台或字符串/流
- Cout 无法在显示器上打印(控制台)
- 禁止从导入的 DLL 打印控制台