我有这样的一个结构:
struct bye {
char b;
char y;
char e;
}
我想用scanf
读取一行包含3个字母的单词,但每个字母之间有同样数量的未知空格。
例如:"b[n 个空格]y[n 个空格]e" 然后输入:
struct bye word;
word.b = 'b'
word.y = 'y'
和word.e = 'e'
我尝试了类似的操作,但是不起作用:
typedef struct bye bye_s;
bye_s setInput() {
bye_s ret;
char current_char;
scanf("%c", ¤t_char);
ret.b = current_char;
do {
scanf("%c", ¤t_char);
} while (current_char == ' ');
ret.y = current_char;
do {
scanf("%c", ¤t_char);
} while (current_char == ' ');
ret.e = current_char;
return ret;
}
' '
字符作为空格时,它对我有效。如果我混入\t
或\n
,你的代码将无法处理,因为你正在与文字' '
进行比较。(可以在ctype.h中查看isspace
)。如下答案所述,标准库可能有获取您想要的行为的方法。如果建议的答案对您的问题无效,您应该编辑问题以显示您提供的输入以及令人惊讶的输出(与您预期的不同)。 - lockcmpxchg8b