slo*_*low 0 c buffer scanf while-loop
正如标题所说,我应该使用
while(getchar() != '\n');
Run Code Online (Sandbox Code Playgroud)
每次我使用scanf?有人可以解释背后的逻辑
while(getchar() != '\n');
Run Code Online (Sandbox Code Playgroud)
谢谢.
不,你通常不需要这样做.你发布的循环读取字符,stdin直到它遇到一个不是\n.你编写它的方式,就像换行符一样,最后一个非换行符也会丢失.
通过以下方式可以避免典型问题或"冲洗"的需要:
scanf与其他输入法混合使用.例如,不要与它混合fgets例如,要忽略空格,而不是scanf("%c"...)使用空格scanf(" %c"..).
除此之外,当您有复杂的输入要读入时,您可能希望:
读取整个字符串fgets,然后您可以随意解析sscanf,strtok等等.它可能看起来像一个矛盾,建议sscanf哪里scanf不充分.关键是,一旦你使用安全存储完整的字符串fgets,你就可以更自由地分析它,抛出不匹配的部分,在strchr这里和那里做等等
使用更适合作业的语言(带库),如python或perl,可以将任务简化为更简单的问题
使用成熟的词法分析器