分别用gets()函数和scanf()函数,输入一个长度为10的字符串,并用put函数输出结果
时间: 2024-12-16 21:20:13 浏览: 3
在C语言中,`gets()`函数用于从标准输入读取一行字符,直到遇到换行符为止,然后将其存储在一个字符数组中。但是请注意,`gets()`函数已经不再安全使用,因为它容易导致缓冲区溢出问题。
```c
#include <stdio.h>
#define MAX_LEN 10
int main() {
char str[MAX_LEN];
printf("请输入一个长度为10的字符串:");
fgets(str, MAX_LEN + 1, stdin); // 注意fgets的终止字符应包含'\0'
str[MAX_LEN] = '\0'; // 结束字符串,防止未读字符影响后续处理
puts(str);
return 0;
}
```
而在C++中,可以使用`std::getline()`替换`gets()`,它是更安全的选择:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str;
std::cout << "请输入一个长度为10的字符串:" << std::endl;
std::getline(std::cin, str);
std::cout << "输入的字符串是:" << str << std::endl;
return 0;
}
```
至于`scanf()`函数,通常用于接收特定格式的用户输入,但在输入字符串时,需要配合`fgets()`使用,因为它会保留空格和制表符:
```c
#include <stdio.h>
#define MAX_LEN 10
int main() {
char str[MAX_LEN];
printf("请输入一个长度为10的字符串:");
fgets(str, MAX_LEN + 1, stdin);
str[MAX_LEN] = '\0';
if (scanf("%s", str) == 1) { // scanf返回成功读取的字段数,如果正好读入一个字符串则返回1
puts(str);
}
return 0;
}
```
阅读全文