用 scanf 中的 %c 来读多个用空格隔开的字符时,它会去读空格。这个时候我们可以这么写:
时间: 2024-09-07 16:06:11 浏览: 54
scanf是C语言中的一个格式化输入函数.docx
当使用 C 语言的 `scanf` 函数以及 `%c` 格式化字符串来读取多个单个字符时,如果输入包含空格,`scanf` 会默认跳过空格继续查找下一个字符。如果你想要读取空格,并将其视为单独的字符,你需要特别处理。
例如,如果你想一次性读取一串由空格分隔的字符作为字符串数组,可以这样做:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHARS 100
int main() {
char input[MAX_CHARS];
int i = 0;
while (i < MAX_CHARS - 1) { // 防止溢出
if (scanf("%c", &input[i]) == EOF || input[i] == '\n') { // 结束标志:EOF 或换行符
break;
} else if (input[i] == ' ') { // 如果遇到空格
input[i] = '\0'; // 将空格转换成结束字符串标记
scanf("%c", &input[++i]); // 跳过空格并读取下一个字符
} else {
input[++i] = input[i]; // 不是空格就直接保存
}
}
input[i] = '\0'; // 确保最后一个字符后的终止符
printf("输入的字符: %s\n", input);
return 0;
}
```
在这个例子中,我们检查每次读取是否为空格,如果是,则将该位置设为字符串结束符`\0`,然后读取下一个字符。如果不是空格,我们就直接保存。注意,这需要用户输入非连续的空格,因为`%c`会直接跳过连续的空格。
阅读全文