【问题标题】:Read whole stdin to buffer读取整个标准输入以缓冲
【发布时间】:2018-10-29 23:32:18
【问题描述】:

我有一个带换行符的输入,我需要将其读取到缓冲区。格式仅限于结构。

输入如下所示:

{
[
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() 读取它,但是我无法将标准输入复制到缓冲区。

【问题讨论】:

    标签: c scanf getline


    【解决方案1】:

    getline 读取直到遇到新行;因此,当您第一次按 Enter 时,它将停止。

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

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

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

    【讨论】:

    • 这是一个好方法,除非} 可以出现在输入的其他位置。
    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2011-07-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多