C语言教程-C函数gets()和puts()
函数gets()和puts()被声明在头文件stdio.h中。这两个函数涉及字符串的输入/输出操作。
C函数gets()
函数gets()允许用户输入一些字符,然后按下回车键。用户输入的所有字符将存储在一个字符数组中。为了将其转换成字符串,该数组末尾添加了空字符。gets()允许用户输入空格分隔的字符串。它返回用户输入的字符串。
声明
char[] gets(char[]);
使用gets()读取字符串
#include<stdio.h>
void main() {
char s[30];
printf("Enter the string? ");
gets(s);
printf("You entered %s", s);
}
输出
Enter the string?
javatpoint is the best
You entered javatpoint is the best
函数gets()存在风险,因为它不执行任何数组边界检查,并且会持续读取字符,直到遇到换行符(Enter键)。这可能导致缓冲区溢出,为避免此风险,建议使用fgets()函数代替。fgets()函数确保最多只读取指定数量的字符,从而避免缓冲区溢出。下面是使用fgets()的示例。
C函数puts()
函数puts()与printf()函数非常相似。函数puts()用于在控制台上打印之前由gets()或scanf()函数读取的字符串。函数puts()返回一个整数值,表示打印在控制台上的字符数。由于它会在字符串后面打印一个额外的换行符,将光标移动到控制台的新行,因此puts()函数返回的整数值将始终等于字符串中的字符数加1。
声明
int puts(char[]);
让我们看一个使用gets()读取字符串并使用puts()在控制台上打印的示例。
#include<stdio.h>
#include<string.h>
int main() {
char name[50];
printf("Enter your name: ");
gets(name); // 从用户读取字符串
printf("Your name is: ");
puts(name); // 显示字符串
return 0;
}
输出:
Enter your name: Sonoo Jaiswal
Your name is: Sonoo Jaiswal
在上面的示例中,用户被要求输入一个字符串。函数gets()读取用户输入的字符串并将其存储在字符数组name中。然后使用puts()函数在控制台上打印该字符串。