void Init() {
fflush(stdin);
printf("Input the cup name:");
scanf("%[^\n]s", array_of_water[indexx].name);
array_of_water[indexx].water = rand() % 31 + 20;
}
"%[^\n]s"
我知道它会读取字符串直到遇到换行符。但是,如何使第一个字符不是换行符的例外。
如果我在键盘上按回车键,字符串将保存\n
作为它的元素。但我不想这样,我想让用户输入,除了换行符本身。除此之外,如果我想读到字母/数字/其他符号,格式说明符如何变化?
1条答案
按热度按时间bq9c1y661#
如何读取一个字符串,直到新行除了第一个字符是换行符本身...?
正确使用
scanf()
将成功OP的
scanf("%[^\n]s", array_of_water[indexx].name);
缺少上下文,因为array_of_water[indexx].name
的大小和输入都是未知的。fflush(stdin);
也是未定义的行为。删除它。**
"%[^\n]s"
中的s
不正确。请删除s
。左做:
buf
的长度为99,则使用非'\n'
行的其余部分。'\n'
。使用
fgets()
更简单。左做:
buf
的长度为99,则可能使用非'\n'
行的其余部分。