以下叙述中错误的是() gets函数用于从终端读入字符串 getchar函数用于从磁盘文件读入字符 fputs函数用于把字符串输出到文件 fwrite函数用于以二进制形式输出数据到文件
时间: 2023-12-20 22:04:30 浏览: 64
以下叙述中错误的是:`getchar` 函数用于从磁盘文件读入字符。
`getchar` 函数用于从标准输入流中读入一个字符,而不是从磁盘文件读入字符。它的函数原型定义在头文件 `<stdio.h>` 或 `<cstdio>` 中,格式如下:
```c
int getchar(void);
```
`gets` 函数用于从标准输入流中读入一个字符串,但是由于它没有对输入的字符串长度进行限制,因此容易导致缓冲区溢出漏洞,因此在实际编程中不建议使用。
`fputs` 函数用于将一个字符串输出到指定的文件流中,函数原型定义在头文件 `<stdio.h>` 或 `<cstdio>` 中,格式如下:
```c
int fputs(const char *str, FILE *stream);
```
`fwrite` 函数用于将指定的数据块以二进制形式输出到指定的文件流中,函数原型定义在头文件 `<stdio.h>` 或 `<cstdio>` 中,格式如下:
```c
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
因此,以上叙述中错误的是:`getchar` 函数用于从磁盘文件读入字符。
相关问题
用gets函数输入字符串用考虑getchar改进吗C语言
不建议使用gets函数输入字符串,因为它存在缓冲区溢出的安全问题。可以使用fgets函数代替gets函数。
如果想要使用getchar函数输入字符串,可以通过循环来实现,具体步骤如下:
1. 定义一个字符数组存储输入的字符串。
2. 使用getchar函数逐个读取字符并存储到数组中,直到读取到换行符停止。
3. 在数组的末尾添加一个结束符'\0'。
4. 如果输入的字符串超过了数组的大小,可以使用动态内存分配函数malloc来分配足够大的空间存储字符串,但是要注意释放内存。
以下是一个使用getchar函数输入字符串的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
int main() {
char *str = (char *)malloc(sizeof(char) * MAX_LEN); // 动态分配内存
int i = 0;
char ch;
printf("请输入字符串:");
while ((ch = getchar()) != '\n' && i < MAX_LEN - 1) {
str[i++] = ch;
}
str[i] = '\0';
printf("输入的字符串为:%s\n", str);
free(str); // 释放内存
return 0;
}
```
需要注意的是,getchar函数每读取一个字符就会从输入缓冲区中删除一个字符,因此输入的字符串中不能包含空格和制表符。如果需要输入包含空格和制表符的字符串,可以考虑使用fgets函数。
用gets函数输入字符串用考虑getchar()去除回车符吗C语言
在使用 `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` 数组中,并且去除回车符。