gets函数会读入空格吗
时间: 2023-12-21 14:06:01 浏览: 140
是的,gets函数会读入空格。gets函数会从输入流中读取字符,直到遇到换行符或文件结束符为止,并将读取的字符存储在指定的字符串中,包括空格在内。但是要注意,gets函数没有对输入字符的长度进行检查,可能会导致缓冲区溢出的安全问题。所以建议使用更安全的函数,如fgets函数,并指定最大字符数来避免溢出。
相关问题
比较字符串\n\n编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负
题目描述:
比较字符串
编一个程序,将两个字符串s1,s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数、负数、零都是整型。
解题思路:
可以用strcmp()函数来实现这个功能,不过题目要求不使用strcpy()函数,所以我们需要手写字符串比较函数。
具体实现如下:
- 首先比较两个字符串对应位置上的字符,如果相等,则继续比较下一个字符;
- 如果当前位置上的字符不相等,那么就判断哪个字符大,如果s1当前位置上的字符大,则返回一个正数;否则返回一个负数;
- 如果比较完了一个字符串,还没有发现不同,那么就根据两个字符串的长度再作比较。
回答:
比较字符串的函数可以手写,具体的实现方法可以参考解题思路中的描述。需要注意的是,输入字符串的时候需要用gets()函数,而不是scanf或者其他的输入函数。如果用scanf函数输入字符串,那么会在遇到空格或者其他类型的分割符的时候停止读取,导致程序无法正常工作。而gets函数则可以一直读取输入,直到读到回车或者换行符为止。
若要求从键盘读入含有空格字符的字符串,应使用函数______。 A、getc() B、gets() C、getchar()D、scanf()
如果要从键盘读入含有空格字符的字符串,应该使用函数 `fgets()`。
`gets()` 函数已经被废弃,不再推荐使用。而 `scanf()` 函数遇到空格字符就会停止读取,因此无法读入含有空格字符的字符串。
`getc()` 函数和 `getchar()` 函数都是读取单个字符,无法读入完整的字符串。而 `fgets()` 函数可以读取一行字符串,包括其中的空格字符,格式如下:
```c
fgets(str, n, stdin);
```
其中,`str` 表示存储字符串的字符型数组名,`n` 表示最大读取字符数,`stdin` 表示读取输入流。例如,如果要读取不超过 100 个字符的一行字符串,可以使用以下语句:
```c
char str[101];
fgets(str, 100, stdin);
```
需要注意的是,`fgets()` 函数读取到换行符 `\n` 时,会将其作为字符串的一部分读入,并将其存储到字符串中。因此,如果需要去掉字符串末尾的换行符,可以使用以下语句:
```c
str[strcspn(str, "\n")] = '\0';
```
其中,`strcspn(str, "\n")` 函数返回字符串 `str` 中首次出现换行符的位置,然后将其替换为字符串结束符 `\0`。