输入输出函数:能够让程序和用户或者文件进行交互。
头文件:#include<stdio.h>
1. printf 函数:输出格式化信息到控制台
使用格式
printf("格式字符串", 参数列表);
作用
把格式化后的字符串输出到控制台。格式字符串里可以包含普通字符和格式说明符,格式说明符会被后面参数列表里的值替换。
用法
格式说明符一般以 %
开头,常见的有 %d
(用于输出整数)、%f
(用于输出浮点数)、%c
(用于输出字符)、%s
(用于输出字符串)等。
️ 注意事项
- 格式说明符要和参数的类型相匹配。
- 格式字符串中的普通字符会原样输出。
适用类型
适用于各种基本数据类型以及字符串。
示例
#include <stdio.h> int main() { int age = 20; float height = 1.75; char grade = 'A'; char name[] = "Alice"; // 输出整数 printf("年龄是 %d 岁。\n", age); // 输出浮点数 printf("身高是 %.2f 米。\n", height); // 输出字符 printf("成绩等级是 %c。\n", grade); // 输出字符串 printf("姓名是 %s。\n", name); return 0; }
解释
在这个例子中,printf
函数依据格式说明符把变量的值输出到控制台。%.2f
表示输出浮点数时保留两位小数。
2. scanf 函数:从控制台读取格式化输入
使用格式
scanf("格式字符串", &变量1, &变量2, ...);
作用
从控制台读取用户输入的数据,并且按照格式字符串的要求把数据存储到对应的变量中。
用法
格式说明符和 printf
函数里的类似,不过要在变量名前加上取地址符 &
,以此表明是要把数据存储到该变量的地址处。
️ 注意事项
- 输入的数据要和格式字符串匹配。
- 输入多个数据时,一般用空格、制表符或者换行符分隔。
适用类型
适用于各种基本数据类型。
示例
#include <stdio.h> int main() { int num; float score; char ch; // 提示用户输入整数 printf("请输入一个整数:"); scanf("%d", &num); // 提示用户输入浮点数 printf("请输入一个浮点数:"); scanf("%f", &score); // 提示用户输入字符 printf("请输入一个字符:"); scanf(" %c", &ch); // 注意前面的空格,用于跳过之前输入的换行符 // 输出用户输入的内容 printf("你输入的整数是 %d,浮点数是 %.2f,字符是 %c。\n", num, score, ch); return 0; }
解释
这个例子中,scanf
函数按照格式说明符读取用户输入的数据,并把它们存储到对应的变量中。在读取字符前加空格是为了跳过之前输入的换行符。
3. getchar 函数:读取单个字符 ⌨️
使用格式
int getchar(void);
作用
从标准输入(通常是键盘)读取一个字符,并返回该字符的 ASCII 码值。
用法
调用 getchar
函数时,程序会暂停,等待用户输入一个字符,按下回车键后,函数会返回该字符的 ASCII 码值。
️ 注意事项
getchar
会读取换行符,所以在连续使用时要注意处理换行符。- 函数返回值是
int
类型,不是char
类型。
适用类型
适用于字符类型。
示例
#include <stdio.h> int main() { char ch; // 提示用户输入一个字符 printf("请输入一个字符:"); ch = getchar(); // 输出用户输入的字符 printf("你输入的字符是 %c。\n", ch); return 0; }
解释
此例中,getchar
函数读取用户输入的一个字符,并将其赋值给变量 ch
,然后输出该字符。
4. putchar 函数:输出单个字符 ️
使用格式
int putchar(int c);
作用
把一个字符输出到标准输出(通常是控制台)。
用法
传入一个字符的 ASCII 码值或者字符常量,函数会将对应的字符输出到控制台。
️ 注意事项
- 传入的参数可以是字符常量,也可以是字符变量的 ASCII 码值。
- 函数返回值是输出的字符的 ASCII 码值。
适用类型
适用于字符类型。
示例
#include <stdio.h> int main() { char ch = 'B'; // 输出字符 putchar(ch); putchar('\n'); // 输出换行符 return 0; }
解释
在这个例子中,putchar
函数把字符 B
输出到控制台,然后输出一个换行符。
5. fopen 函数:打开文件
使用格式
FILE *fopen(const char *filename, const char *mode);
作用
打开指定文件名的文件,并返回一个指向该文件的 FILE
指针。
用法
filename
是要打开的文件的名称,mode
是打开文件的模式,常见的模式有:
"r"
:以只读模式打开文件。"w"
:以写入模式打开文件,如果文件不存在则创建,如果存在则清空内容。"a"
:以追加模式打开文件,如果文件不存在则创建。
️ 注意事项
- 打开文件后,要检查返回的指针是否为
NULL
,若为NULL
则表示打开文件失败。 - 操作完文件后,要使用
fclose
函数关闭文件。
适用类型
适用于文件操作。
示例
#include <stdio.h> int main() { FILE *file; // 以只读模式打开文件 file = fopen("test.txt", "r"); if (file == NULL) { // 输出错误信息 printf("无法打开文件!\n"); return 1; } // 这里可以进行文件读取操作 // 关闭文件 fclose(file); return 0; }
解释
此例中,fopen
函数尝试以只读模式打开 test.txt
文件,若打开失败则输出错误信息,打开成功后可以进行文件读取操作,最后使用 fclose
函数关闭文件。
6. fclose 函数:关闭文件
使用格式
int fclose(FILE *stream);
作用
关闭指定的文件流,释放相关资源。
用法
传入一个指向 FILE
类型的指针,该指针是通过 fopen
函数返回的。
️ 注意事项
- 关闭文件后,就不能再对该文件进行读写操作了。
- 函数返回值为 0 表示关闭成功,非 0 表示关闭失败。
适用类型
适用于文件操作。
示例
#include <stdio.h> int main() { FILE *file; // 以写入模式打开文件 file = fopen("test.txt", "w"); if (file == NULL) { // 输出错误信息 printf("无法打开文件!\n"); return 1; } // 这里可以进行文件写入操作 // 关闭文件 if (fclose(file) == 0) { printf("文件关闭成功!\n"); } else { printf("文件关闭失败!\n"); } return 0; }
解释
这个例子中,fopen
函数以写入模式打开 test.txt
文件,进行文件写入操作后,使用 fclose
函数关闭文件,并根据返回值判断关闭是否成功。
7. fgets 函数:安全读取字符串
使用格式
char *fgets(char *str, int n, FILE *stream);
作用
从指定的文件流中读取一行字符串,并存储到 str
指向的字符数组中。
用法
str
是存储读取字符串的字符数组,n
是最多读取的字符数(包含换行符和字符串结束符 '\0'
),stream
是文件流指针,可以是 stdin
(标准输入)或者通过 fopen
打开的文件指针。
️ 注意事项
- 若读取的字符数达到
n - 1
或者遇到换行符,读取会停止,并且会在字符串末尾添加'\0'
。 - 若读取成功,返回
str
指针;若遇到文件结束符或者出错,返回NULL
。
适用类型
适用于字符串类型。
示例
#include <stdio.h> int main() { char buffer[100]; // 从标准输入读取一行字符串 printf("请输入一行字符串:"); fgets(buffer, sizeof(buffer), stdin); // 输出读取的字符串 printf("你输入的字符串是:%s", buffer); return 0; }
解释
在这个例子中,fgets
函数从标准输入读取一行字符串,最多读取 sizeof(buffer) - 1
个字符,然后将其存储到 buffer
数组中,并输出该字符串。
8. fputs 函数:输出字符串到文件
使用格式
int fputs(const char *str, FILE *stream);
作用
把字符串 str
输出到指定的文件流中。
用法
str
是要输出的字符串,stream
是文件流指针,可以是 stdout
(标准输出)或者通过 fopen
打开的文件指针。
️ 注意事项
- 函数不会自动添加换行符,若需要换行,要在字符串中手动添加
'\n'
。 - 若输出成功,返回非负值;若出错,返回
EOF
。
适用类型
适用于字符串类型。
示例
#include <stdio.h> int main() { FILE *file; // 以写入模式打开文件 file = fopen("test.txt", "w"); if (file == NULL) { // 输出错误信息 printf("无法打开文件!\n"); return 1; } // 向文件中写入字符串 fputs("Hello, World!\n", file); // 关闭文件 fclose(file); return 0; }
解释
此例中,fopen
函数以写入模式打开 test.txt
文件,fputs
函数把字符串 "Hello, World!\n"
写入文件,最后使用 fclose
函数关闭文件。
缓冲区管理技巧
通用清空方案:
void clear_buffer() { int c; while ((c = getchar()) != '\n' && c != EOF); }
使用场景:
在scanf()
后立即调用
处理异常输入时
黄金法则:
- 所有输入函数都要考虑缓冲区溢出风险
- 文件操作后必须检查返回值并关闭文件
- 格式化IO要严格匹配类型
掌握这些核心函数,你的C语言IO操作将游刃有余!
到此这篇关于C 语言输入输出库函数讲解的文章就介绍到这了,更多相关C 语言输入输出库函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源链接:https://www.jb51.net/program/339083dom.htm
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
暂无评论内容