【发布时间】:2011-11-11 17:21:08
【问题描述】:
当我应该从输入中读取直到有空格,然后直到用户按下回车键时,我被要求在 C 中做一项工作。 如果我这样做:
scanf("%2000s %2000s", a, b);
它将遵循第一条规则,而不是第二条。
如果我写:
我很聪明
我得到的相当于:
a = "我";
b = "我";
但应该是:
a = "我";
b = "我很聪明";
我已经试过了:
scanf("%2000s %2000[^\n]\n", a, b);
和
scanf("%2000s %2000[^\0]\0", a, b);
在第一个中,它等待用户按 Ctrl+D (发送 EOF),这不是我想要的。 在第二个中,它不会编译。根据编译器:
警告:“%[”格式没有关闭“]”
有什么好办法解决吗?
【问题讨论】:
-
为什么不使用gets();并从那里操作返回的字符串?
-
听起来像家庭作业?如果分配要求您不读取字符串然后解析它,您可能想查看
getc()。 -
@brianroach 请不要让 cmet 的性质“看起来像家庭作业”。它没有生产力。