c - C语言中带空格的scanf
问题描述
我有这个结构:
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
返回值!
推荐阅读
- sql - 将日期列表转换为 DateFrom/DateTo 范围的最佳方法
- python - 为什么 pandas str.replace 用 .* 模式多次插入替换值
- python - 在 Python 中对项目进行排序
- html - 有没有办法在两个页面上使用 JQuery 隐藏和显示功能?
- database - 数据库中的检索和查询有什么区别?
- kubernetes - k8s / 命名空间 - 创建“子”命名空间
- kubernetes - 如何升级 Rancher 2.4,由 Digital Ocean 上的 quicksteps 创建
- macos - 为什么“touch åäö”最终会变成“\303\245\303\244\303\266”?
- sql - 如何解决缺少括号错误
- python - 分配有关我的字典索引的决策变量