我有这个结构:
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;
}
只是用
if (scanf("%c %c %c", &ret.b, &ret.y, &ret.e) != 3) {
/* failed */
}
scanf格式的任何空白区域都意味着跳过输入中的任何数量的空白区域。
永远不要忘记检查scanf
返回值!
您可以简单地在格式字符串中放置一个空格,跳过无限数量的空格:scanf("%c %c %c",&char1,&char2,&char3);