c语言gets()返回什么
时间: 2024-03-28 12:40:13 浏览: 21
C语言的gets()函数返回一个指向输入字符串的指针,如果读取了一个空字符串或者读取失败,返回NULL。该函数会将输入缓冲区中的换行符('\n')替换为空字符('\0'),并将结果字符串存储在目标字符数组中。但是,由于该函数存在缓冲区溢出的安全隐患,现在已经不建议使用gets()函数,而是推荐使用fgets()函数来读取字符串。
相关问题
C语言gets()函数
`gets()`函数是C语言标准库中的一个函数,用于从标准输入设备(通常是键盘)读取一行字符串,并将其存储到指定的字符数组中。
`gets()`函数的声明如下:
```c
char* gets(char* str);
```
其中,`str`是一个指向字符数组的指针,用于存储读取到的字符串。`gets()`函数返回值为读取到的字符串的首地址,如果读取到了空字符串或者读取过程中发生了错误,则返回空指针。
使用`gets()`函数时需要注意以下几点:
- `gets()`函数没有对输入的字符串长度进行检查,因此容易发生缓冲区溢出的问题,应尽量避免使用。
- `gets()`函数会将读取到的换行符('\n')也存储到字符数组中,因此需要注意去除换行符。
- 推荐使用`fgets()`函数代替`gets()`函数,`fgets()`函数能够限制输入字符串的长度,避免缓冲区溢出。
c语言gets和scanf区别
C语言中,gets和scanf都是用于输入数据的函数,但它们有以下区别:
1. gets函数只能读取字符串,而scanf函数可以读取各种数据类型,如整数、浮点数、字符等。
2. gets函数不会跳过空格和换行符,而scanf函数会跳过空格和换行符。
3. gets函数不会进行数据类型检查,如果输入的数据类型不是字符串,会导致程序崩溃;而scanf函数会进行数据类型检查,如果输入的数据类型与格式不符,会返回错误信息。
4. gets函数存在缓冲区溢出的安全问题,如果输入的字符串长度超过了数组的长度,会导致程序崩溃;而scanf函数可以通过参数限制输入数据的长度,避免了安全问题。
因此,一般情况下,为了避免安全问题,推荐使用scanf函数进行输入。