【发布时间】:2019-11-21 02:28:14
【问题描述】:
char ad[8];
char ct[40];
printf("postal code: ");
scanf(" %[^\n]7s", ad);
printf("city: ");
scanf(" %[^\n]40s", ct);
printf("Address: |%s|%s\n", ad, ct);
广告输入示例:m2r 3r3 t4t。
输出应该是:m2r 3r3。
但
输出为:m2r 3r3 t4t
【问题讨论】:
-
您是否认为
[^\n]7是%s的修饰符? -
@Barmar 就是要捕获空格
-
但它不是修饰符。
%[^\n]是整个格式,7s后面跟它无关。 -
我见过很多人把
s放在%[^\n]之后,我不知道你们从哪里知道他们是有联系的。 -
用户输入最好不要使用
scanf()。使用fgets()读取整行,然后使用sscanf()从该行中提取您想要的内容。