读取整个stdin到缓冲区

问题描述 投票:0回答:1

我有一个新行的输入,我需要读取缓冲区。格式仅限于结构。

输入看起来像这样:

{
[
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()读取它,但后来我无法将stdin复制到缓冲区。

c scanf getline
1个回答
2
投票

getline读到它遇到一条新线;因此,当您第一次按Enter键时它将停止。

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

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

这样,新行也将被读入,读取分隔符}后读取将停止。

© www.soinside.com 2019 - 2024. All rights reserved.