字符数组里的gets(s)是什么意思
时间: 2024-04-04 07:34:29 浏览: 10
函数gets(s)用来从标准输入(stdin)读取字符串,直到读取到换行符或者EOF为止。读取到的字符串存储在参数s所指向的字符数组中,换行符也会被读取但不会被存储在字符数组中。gets()函数不进行数组边界检查,容易造成缓冲区溢出的安全问题,不建议使用。建议使用更安全的fgets()函数来代替gets()函数。
相关问题
s 是数组,gets(s+2)是什么意思
在这个语句中,s是一个字符数组,gets函数用来读取一行字符串并存储到s数组中。gets函数的参数s是一个指向字符数组的指针,表示将读取到的字符串存储到该数组中。
而gets(s+2)表示将输入的字符串存储到s数组从第3个元素开始的位置(即下标为2的位置)到数组末尾的位置。这是因为s+2是一个指向s数组第3个元素的指针,所以gets函数从第3个元素开始读取字符串并存储到s数组中,覆盖掉该位置及其后面的字符。
二维字符数组使用gets读取地址
二维字符数组可以使用scanf或者fgets函数来读取地址,具体实现如下:
```c
#include <stdio.h>
#define ROW 3
#define COL 10
int main() {
char arr[ROW][COL];
int i;
printf("Enter %d strings:\n", ROW);
for (i = 0; i < ROW; i++) {
fgets(arr[i], COL, stdin); //使用fgets读取
}
printf("You entered:\n");
for (i = 0; i < ROW; i++) {
printf("%s", arr[i]);
}
return 0;
}
```
注意,使用gets函数读取存在安全问题(因为gets不会限制输入的字符数,可能会导致缓冲区溢出),因此建议使用fgets函数。fgets函数可以指定最大读取字符数,读取到指定字符数或者遇到换行符时停止读取。