这里主要记录输入函数(在遇到空格 换行等空白字符)。
先汇总一下常见输入输出函数
getchar,putchar gets,puts scanf,printf
文件中 (getc,putc fgetc,fputc)(前者可能是宏,后者是函数) fgets,fputs fscanf,fprintf
getchar可以读取空白字符,包括换行符 \n
gets读取字符串包括空白字符,遇到换行符结束
scanf("%s", ) %s 不能读取空白字符;scanf("%c", ) %c 可以读取任意一个字符包括空白字符
C语言中的输入输出函数主要集中在标准输入输出库(stdio.h)中。以下是标准C库中常用的输入输出函数的全面列表:
### 字符输入输出函数
- **`getc`**:从指定的文件流中读取一个字符(可能是宏)。
```c
int getc(FILE *stream);
```
- **`fgetc`**:从指定的文件流中读取一个字符(总是函数)。
```c
int fgetc(FILE *stream);
```
- **`getchar`**:从标准输入读取一个字符,相当于 `getc(stdin)`。
```c
int getchar(void);
```
- **`putc`**:向指定的文件流写入一个字符(可能是宏)。
```c
int putc(int char, FILE *stream);
```
- **`fputc`**:向指定的文件流写入一个字符(总是函数)。
```c
int fputc(int char, FILE *stream);
```
- **`putchar`**:向标准输出写入一个字符,相当于 `putc(char, stdout)`。
```c
int putchar(int char);
```
### 字符串输入输出函数
- **`gets`**:从标准输入读取一行字符(不推荐使用,因为存在缓冲区溢出风险)。
```c
char *gets(char *str);
```
- **`fgets`**:从指定的文件流中读取一行字符。
```c
char *fgets(char *str, int n, FILE *stream);
```
- **`puts`**:向标准输出写入一个字符串,并添加一个换行符。
```c
int puts(const char *str);
```
- **`fputs`**:向指定的文件流写入一个字符串。
```c
int fputs(const char *str, FILE *stream);
```
### 格式化输入输出函数
- **`printf`**:向标准输出写入格式化数据。
```c
int printf(const char *format, ...);
```
- **`fprintf`**:向指定的文件流写入格式化数据。
```c
int fprintf(FILE *stream, const char *format, ...);
```
- **`sprintf`**:将格式化数据写入字符串。
```c
int sprintf(char *str, const char *format, ...);
```
- **`snprintf`**:将格式化数据写入字符串,限制写入长度。
```c
int snprintf(char *str, size_t size, const char *format, ...);
```
- **`scanf`**:从标准输入读取格式化数据。
```c
int scanf(const char *format, ...);
```
- **`fscanf`**:从指定的文件流读取格式化数据。
```c
int fscanf(FILE *stream, const char *format, ...);
```
- **`sscanf`**:从字符串读取格式化数据。
```c
int sscanf(const char *str, const char *format, ...);
```
### 文件输入输出函数
- **`fopen`**:打开文件并返回文件指针。
```c
FILE *fopen(const char *filename, const char *mode);
```
- **`freopen`**:重定向文件流。
```c
FILE *freopen(const char *filename, const char *mode, FILE *stream);
```
- **`fclose`**:关闭文件流。
```c
int fclose(FILE *stream);
```
- **`fflush`**:刷新文件流。
```c
int fflush(FILE *stream);
```
- **`fread`**:从文件流读取数据块。
```c
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
```
- **`fwrite`**:向文件流写入数据块。
```c
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
```
### 文件定位和状态函数
- **`fseek`**:移动文件指针位置。
```c
int fseek(FILE *stream, long int offset, int whence);
```
- **`ftell`**:获取文件指针当前位置。
```c
long int ftell(FILE *stream);
```
- **`rewind`**:重置文件指针位置。
```c
void rewind(FILE *stream);
```
- **`feof`**:检查文件流是否到达文件末尾。
```c
int feof(FILE *stream);
```
- **`ferror`**:检查文件流是否发生错误。
```c
int ferror(FILE *stream);
```
- **`clearerr`**:清除文件流的错误和 EOF 标志。
```c
void clearerr(FILE *stream);
```
### 文件描述符函数
- **`fileno`**:获取文件流的文件描述符。
```c
int fileno(FILE *stream);
```
### 临时文件函数
- **`tmpfile`**:创建临时二进制文件。
```c
FILE *tmpfile(void);
```
- **`tmpnam`**:生成唯一的临时文件名。
```c
char *tmpnam(char *str);
```
这些函数涵盖了C语言中处理输入输出操作的主要工具,从基本字符和字符串处理,到复杂的格式化和文件操作。熟悉这些函数有助于在不同的输入输出场景中编写高效、可靠的C代码。