用gets函数输入字符串用考虑getchar()去除回车符吗C语言
时间: 2023-06-14 20:08:36 浏览: 80
在使用 `gets()` 函数输入字符串时,如果输入的字符串中包含空格或制表符等空白字符,这些字符也会被读入,并且字符串的末尾会自动添加一个空字符 '\0',表示字符串的结束。但是,`gets()` 函数是不会自动去除输入字符串中的回车符的,因此需要使用 `getchar()` 函数来去除回车符。
可以使用如下代码实现:
```c
char str[100];
int c, i = 0;
while ((c = getchar()) != '\n' && c != EOF) // 读取输入的字符,直到遇到回车符或文件结束符
{
str[i++] = c; // 将读取的字符存入字符串中
}
str[i] = '\0'; // 添加字符串结束符
```
这段代码会读取用户输入的字符串,将字符串存入 `str` 数组中,并且去除回车符。
相关问题
C语言用gets()读取字符串怎样清空缓存区保证没有回车符
在使用 `gets()` 函数读取字符串时,可以在读取完字符串后再使用 `getchar()` 函数读取缓冲区中的回车符,从而清空缓冲区。具体代码如下:
```c
char str[100];
gets(str); // 读取字符串
while(getchar() != '\n'); // 清空缓冲区
```
在这个代码中,我们先使用 `gets()` 函数读取字符串 `str`,然后使用一个 `while` 循环和 `getchar()` 函数来读取缓冲区中的回车符。由于回车符的 ASCII 码是 `\n`,因此当读取到回车符时,循环就会结束,从而清空了缓冲区。这样就可以确保在读取下一个字符串时,缓冲区中不会有残留的回车符。
用c语言编写一个函数,删除字符串s中的特殊字符ch
好的,以下是用 C 语言编写一个函数,删除字符串 s 中的特殊字符 ch 的代码:
```
#include <stdio.h>
#include <string.h>
void remove_char(char *s, char ch) {
int i, j;
int n = strlen(s);
for (i = 0, j = 0; i < n; i++) {
if (s[i] != ch) {
s[j] = s[i];
j++;
}
}
s[j] = '\0';
}
int main() {
char s[100], ch;
printf("请输入一个字符串: ");
scanf("%s", s);
getchar(); // 消耗掉回车符
printf("请输入要删除的特殊字符: ");
scanf("%c", &ch);
remove_char(s, ch);
printf("删除特殊字符后的字符串为: %s\n", s);
return 0;
}
```
不要忘记在调用 scanf 函数后,消耗掉输入的回车符,否则可能导致后续 fgets 函数和 gets 函数等读取空白行的问题。