9-2、gets和puts

1、gets函数类似于scanf函数,用于读取标准输入,但是scanf函数在读取字符串时遇到空格就会认为读取结束,所以当输入的字符串中存在空格时,就需要使用gets函数进行读取。

gets只能读取字符,scanf除了可以读取字符,还能读取整型、字符型等。

c是字符数组or字符指针?

char c[20]

c是一个字符数组,但是编译器给c内部存了一个值,c里边存储的值的类型是字符指针

2、puts函数类似于printf函数,用于输出标准输出

#include <stdio.h>

int main()
{
	char c[20];
	//字符数组的数组名里存的就是字符数组的起始地址,类型是字符指针
	//&c[0]==c
	gets(c);
	puts(c);//等价于printf("%s\n",c);
	return 0;
}

scantf其实也有办法让它读取到空格,但是比较复杂,所以用gets()函数。

gets函数从STDIN(标准输入) 读取字符并把它们加载到字符串中,直到遇到换行符(\n)或到达EOF。

get函数会自动会自动在末尾加上结束符,不会出现越界问题

 

### C语言 `gets` `puts` 函数的使用方法及区别 #### 一、`gets()` 函数 `gets()` 是一个用于从标准输入流(通常是键盘)读取字符串的函数。它可以读取一行完整的字符串,包括其中可能存在的空格字符[^1]。 - **语法**: ```c char *gets(char *str); ``` - **功能**: 它会一直读取直到遇到换行符 `\n` 或者文件结束标志 `EOF`,并将读取的内容存储到参数 `str` 所指向的缓冲区中。需要注意的是,`gets()` 不会保存换行符本身,但它会在字符串末尾自动添加一个终止符 `\0`[^3]。 - **注意事项**: - 如果输入的数据超出了目标数组的大小,则会发生缓冲区溢出问题,这是非常危险的行为。 - 此外,在现代编程实践中,建议避免使用 `gets()`,因为它无法防止缓冲区溢出攻击。推荐替代方案为更安全的 `fgets()` 函数[^4]。 #### 二、`puts()` 函数 `puts()` 的作用是从内存中的某个位置取出字符串并将其发送至标准输出设备(通常是指屏幕)。它还会在输出结束后附加一个换行符 `\n`[^2]。 - **语法**: ```c int puts(const char *str); ``` - **功能**: 输出由参数 `str` 指向的整个字符串直至遇到第一个零字节即字符串终结符 `\0` 前为止,并且最后再追加一个换行符来完成操作。 - **返回值**: 成功时返回非负整数;如果发生错误则返回 `EOF`(-1)。 #### 三、两者之间的主要差异对比表 | 特性 | gets() | puts() | |--------------|----------------------------------|--------------------------------| | 主要用途 | 输入 | 输出 | | 参数类型 | 字符串地址 | const 类型字符串 | | 是否带换行 | 否 | 是 | | 返回值 | 若成功则返回传入的字符串指针 | 成功返回非负整数 | 以下是简单的代码演示如何运用这两个函数: ```c #include <stdio.h> int main(){ char str[100]; printf("请输入一段文字:"); gets(str); //接收用户输入的一行数据 printf("\n您刚才输入的文字是:\n"); puts(str); //显示接收到的信息加上新的一行 return 0; } ``` 此程序先提示用户键入一些文本,接着利用 `gets()` 获取这一行内容存放到变量 `str[]` 中,之后通过调用 `puts()` 将其重新展示出来.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值