c - 读取整个标准输入以缓冲

标签 c scanf getline

我有一个带换行符的输入,我需要读取它来缓冲。格式受限于结构。

输入看起来像这样:

{
[
5.5
;
1
]
,   [   1;  2   ]   ,[3; 4]}

我的代码是这样的:

char *s2 = NULL;
size_t n = 0;
int slozZav = 0;
int hranZav = 0;
getline(&s2, &n, stdin);
if(sscanf(s2, " %c [ %lf ; %lf ] , [ %lf ; %lf ] , [ %lf ; %lf ] %c", &s1, &Ax, &Ay, &Bx, &By, &Cx, &Cy, &s) == 8 && s=='}' && s1=='{' && slozZav % 2 == 0 && hranZav % 2 == 0) { ... }

我使用 getline 的方式是否正确?我尝试用 scanf() 读取它,但我无法将标准输入复制到缓冲区。

最佳答案

getline 读取直到遇到新行;因此,当您第一次按下回车键时它会停止。

要读入要扫描的完整结构,请尝试:

getdelim(&s2, &n, '}', stdin);

这样,新行也将被读入,并且在读取定界符}后停止读取。

关于c - 读取整个标准输入以缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055352/

相关文章:

编码 getline() 实现 - Valgrind 错误

c - 函数输入参数类型转换不当

c++ - 为什么函数指针、函数地址和函数相同?

c - 扫码不行

C++ sscanf 在编译时抛出不相关类型的 "no suitable conversion"错误

c++ - 为什么 C++ StringStream 跳过输入文件中的第一个数字,但显示其余数字?

c - 如何将此代码转换为数组或 malloc?

c - 我如何要求 OpenMP 在每次运行程序时只创建一次线程?

c - 从管道保存到字符串

c - scanf 读取 "Enter"键