scanf 用数组格式化多个特殊字符
scanf formatted multiple special characters with array
我想要输入 3 个符号,例如|
或 %
,但我得到的不是 | | %
,而是 | |
。
航站楼:
| ^ !
| ^
代码在这里:
#include <stdio.h>
char a[10], b[10], c[10];
int i;
int count;
int main(int argc, char const *argv[]) {
scanf("%d", &count);
for (i = 0; i < count; i++) {
scanf("%c %c %c", &a[i], &b[i], &c[i]);
printf("%c %c %c\n", a[i], b[i], c[i]);
}
return 0;
}
请告诉我我做错了什么。谢谢。
要读取可选地由空格分隔的单个字符符号,您必须在 %c
.
之前的格式字符串中使用 </code> 明确忽略此空格
<p>还要检查 <code>scanf()
的 return 值。
这是更正后的版本:
#include <stdio.h>
int main(int argc, char const *argv[]) {
char a[10], b[10], c[10];
int i, count;
if (scanf("%d", &count) == 1 && count <= 10) {
for (i = 0; i < count; i++) {
if (scanf(" %c %c %c", &a[i], &b[i], &c[i]) != 3)
break;
printf("%c %c %c\n", a[i], b[i], c[i]);
}
}
return 0;
}
我想要输入 3 个符号,例如|
或 %
,但我得到的不是 | | %
,而是 | |
。
航站楼:
| ^ !
| ^
代码在这里:
#include <stdio.h>
char a[10], b[10], c[10];
int i;
int count;
int main(int argc, char const *argv[]) {
scanf("%d", &count);
for (i = 0; i < count; i++) {
scanf("%c %c %c", &a[i], &b[i], &c[i]);
printf("%c %c %c\n", a[i], b[i], c[i]);
}
return 0;
}
请告诉我我做错了什么。谢谢。
要读取可选地由空格分隔的单个字符符号,您必须在 %c
.
</code> 明确忽略此空格
<p>还要检查 <code>scanf()
的 return 值。
这是更正后的版本:
#include <stdio.h>
int main(int argc, char const *argv[]) {
char a[10], b[10], c[10];
int i, count;
if (scanf("%d", &count) == 1 && count <= 10) {
for (i = 0; i < count; i++) {
if (scanf(" %c %c %c", &a[i], &b[i], &c[i]) != 3)
break;
printf("%c %c %c\n", a[i], b[i], c[i]);
}
}
return 0;
}