getchar()和scanf()配合如何处理字符串输入?
时间: 2024-09-11 17:06:47 浏览: 46
`getchar()` 和 `scanf()` 都是在 C 语言中用于处理用户输入的函数,但它们在处理字符串时有不同的用途。
`getchar()` 函数是一个单独的字符输入函数,它一次读取并返回一个字符。当需要逐个字符输入字符串时,可以循环调用 `getchar()` 直到遇到换行符(`\n`),这样就可以收集整个字符串。
而 `scanf()` 是一个格式化输入函数,它可以接受格式描述符作为第一个参数,并按照指定格式从标准输入(通常是键盘)读取值。如果想通过 `scanf()` 输入一个字符串,通常会使用 `%s` 格式说明符,但它并不会自动停止读取直到遇到换行符,而是会在遇到空格、制表符或者换行符时停止。
结合使用的话,通常的做法是先使用 `getchar()` 或 `scanf("%c", &temp)` 来获取一个字符,然后判断是否为换行符。如果是换行符,就结束输入,如果不是,则继续收集字符,直到遇到换行为止。最后将收集的字符放入数组或字符串变量中。
示例代码可能如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char input[MAX_LEN];
int ch;
while ((ch = getchar()) != '\n') { // 使用 getchar 获取字符,直到遇到换行
if (ch == EOF) break; // 如果遇到文件结束,退出
input[strcspn(input, "\n")] = ch; // 将字符添加到输入字符串,避免覆盖换行符
}
input[strcspn(input, "\n")] = '\0'; // 添加终止符'\0'
printf("Input string: %s\n", input); // 输出输入的字符串
return 0;
}
阅读全文