【发布时间】:2019-02-13 14:20:25
【问题描述】:
我有这个结构:
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)。如下面的答案所述,标准库可能有办法获得您想要的行为。如果建议的答案对您的问题不起作用,您应该编辑问题以显示您提供的输入,以及您得到的令人惊讶的结果(与您的预期相比)。
标签: c input struct scanf space