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,以避免缓冲区溢出等安全问题。


本文标签: 输入 函数 字符 字符串 实现