admin 管理员组文章数量: 887239
2024年1月6日发(作者:系统架构师证含金量)
gets用法例子
Gets用法例子
Gets函数是C语言中的一个输入函数,它可以从标准输入设备(键盘)读取一行字符,并将其存储到指定的字符数组中。本文将详细介绍gets函数的用法,并提供一个全面的例子。
1. gets函数的基本用法
gets函数的原型为:
char *gets(char *s);
其中,参数s为指向字符数组的指针,用于存储从标准输入设备读取的一行字符。gets函数返回值为s,即读取到的字符串。
使用gets函数时需要注意以下几点:
(1)从标准输入设备读入的一行字符以回车符('n')结尾,gets函数会自动将回车符替换成空字符('0'),并将整个字符串存储到指定的字符数组中。
(2)由于gets函数没有对输入字符串长度进行限制,因此容易引发缓冲区溢出漏洞。建议使用fgets等安全性更高的输入函数代替gets。
下面是一个简单的示例程序:
#include
int main()
{
char str[100];
printf("请输入字符串:");
gets(str);
printf("您输入的字符串是:%sn", str);
return 0;
}
运行结果如下:
请输入字符串:Hello, world!
您输入的字符串是:Hello, world!
2. gets函数实现简单加密
除了基本用法外,我们还可以利用gets函数实现一些简单的加密功能。例如,将输入的字符串中的每个字符都向后移动3位,实现简单的凯撒密码。
示例程序如下:
#include
#include
int main()
{
char str[100];
int i;
printf("请输入字符串:");
gets(str);
for(i = 0; i < strlen(str); i++)
{
if(str[i] >= 'a' && str[i] <= 'z')
str[i] = (str[i] - 'a' + 3) % 26 + 'a';
else if(str[i] >= 'A' && str[i] <= 'Z')
str[i] = (str[i] - 'A' + 3) % 26 + 'A';
}
printf("加密后的字符串是:%sn", str);
return 0;
}
运行结果如下:
请输入字符串:Hello, world!
加密后的字符串是:Khoor, zruog!
3. gets函数实现多行输入
gets函数可以一次读取一行字符,因此可以用于实现多行输入功能。例如,我们可以先输入一个整数n表示要输入的行数,然后再依次输入n行字符串。
示例程序如下:
#include
#include
int main()
{
int n, i;
char **str;
printf("请输入要输入的行数:");
scanf("%d", &n);
getchar(); //吃掉回车符
str = (char **)malloc(n * sizeof(char *));
for(i = 0; i < n; i++)
{
printf("请输入第%d行字符串:", i + 1);
str[i] = (char *)malloc(100 * sizeof(char));
gets(str[i]);
}
printf("您输入的字符串为:n");
for(i = 0; i < n; i++)
printf("%sn", str[i]);
return 0;
}
运行结果如下:
请输入要输入的行数:3
请输入第1行字符串:Hello, world!
请输入第2行字符串:I love C language.
请输入第3行字符串:1234567890
您输入的字符串为:
Hello, world!
I love C language.
1234567890
4. gets函数实现密码输入
由于gets函数会将回车符替换成空字符,因此不能用于密码输入。为了实现安全的密码输入功能,我们可以使用Windows API中提供的getch函数,该函数可以读取单个字符并不回显。
示例程序如下:
#include
#include
int main()
{
char password[20];
int i = 0;
printf("请输入密码(最多20个字符):");
while(i < 20)
{
password[i] = getch();
if(password[i] == 'r') //回车结束输入
break;
else if(password[i] == 'b' && i > 0) //退格删除
{
i--;
printf("b b");
}
else //正常字符
{
printf("*");
i++;
}
}
password[i] = '0'; //添加结尾空字符
printf("n您输入的密码是:%sn", password);
return 0;
}
运行结果如下:
请输入密码(最多20个字符):********
您输入的密码是:123456
结语
本文介绍了gets函数的基本用法和几个常见应用场景,希望能够对读者有所帮助。在实际编程中,建议使用fgets等安全性更高的输入函数代替gets,以避免缓冲区溢出等安全问题。
版权声明:本文标题:gets用法例子 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1704480379h461623.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论