我有一个带有换行符的输入,我需要读取它以缓冲。格式仅限于结构。
输入看起来像这样:
{
[
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复制到缓冲区中。
答案 0 :(得分:2)
getline
读取直到遇到换行为止;因此,它将在您第一次按Enter时停止。
要读取要扫描的完整结构,请尝试:
getdelim(&s2, &n, '}', stdin);
这样,也将读入新行,并且在读取定界符}
之后将停止读取。