有人可以解释一下 %*[^n]
是如何工作的吗?我明白,如果我像 scanf("%*[^\n]")
这样使用它它应该忽略所有输入,直到遇到换行符,但是当我尝试这样的事情时真正发生的情况
scanf("%*[^\n],%10s",str)
str 是一个声明的字符串,我认为换行符后的所有输入
包括换行符将进入字符串,但当我尝试打印它时,它只会打印无效字符。
最佳答案
scanf( "%*[^\n],%10s", str);
尝试读取并丢弃直到(但不包括)下一个换行符的所有内容,然后尝试匹配逗号,然后将最多 10 个非空白字符读入 str
.
这是行不通的,因为如果你读到换行符,那么流中的下一个字符将是换行符,而不是逗号。您可能会遇到匹配失败,并且 str
的内容不会更新。检查 scanf
的返回值,看看您是否成功读取了您期望的项目数(在本例中为 1)。
您可能想要
scanf( "%*[^\n]%10s", str ); // no comma in format string.
这将读取并丢弃直到下一个换行符的所有内容,然后将跳过任何空格,最多 10 个非空格字符将 b3 读入 str
。
关于c - %*[^\n] (scanf) 在 c 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59474001/