C语言的输入与输出是程序与用户进行交互的重要环节。下面,我将详细讲解C语言中输入与输出的相关知识,并通过示例代码进行演示。
一、标准输入输出函数
在C语言中,标准输入输出主要通过stdio.h头文件中的函数实现,其中最常用的函数是printf和scanf。
1. printf函数
printf函数用于向标准输出(通常是控制台)打印格式化的字符串。其基本语法为:
int printf(const char *format, ...);
format是一个格式字符串,可以包含普通字符和格式占位符,后面跟着可变数量的参数,这些参数将替换格式字符串中的占位符。
示例:
#include <stdio.h> int main() { int a = 5; float b = 3.14; printf("整数是:%d,浮点数是:%f\n", a, b); return 0; }
在这个例子中,%d是整数的格式占位符,%f是浮点数的格式占位符。程序运行时,会输出“整数是:5,浮点数是:3.140000”。
2. scanf函数
scanf函数用于从标准输入(通常是键盘)读取数据,并根据格式字符串解析数据。其基本语法为:
int scanf(const char *format, ...);
与printf类似,scanf也使用格式占位符来指示要读取的数据类型。读取的数据将存储在后面的参数中,这些参数需要使用指针来传递变量的地址。
示例:
#include <stdio.h> int main() { int a; float b; printf("请输入一个整数和一个浮点数:\n"); scanf("%d%f", &a, &b); printf("你输入的整数是:%d,浮点数是:%f\n", a, b); return 0; }
在这个例子中,用户被提示输入一个整数和一个浮点数。scanf函数读取这两个值,并将它们存储在变量a和b中。然后,程序使用printf输出这些值。
二、文件输入输出
C语言也支持文件输入输出,主要通过fopen、fclose、fscanf、fprintf等函数实现。
1. fopen函数
fopen函数用于打开一个文件,并返回一个文件指针。其基本语法为:
FILE *fopen(const char *filename, const char *mode);
filename是文件名,mode是打开模式,如"r"表示只读打开,"w"表示写入(会覆盖原有文件内容),"a"表示追加等。
示例:
FILE *fp = fopen("test.txt", "w"); if (fp == NULL) { perror("文件打开失败"); return 1; }
这段代码尝试以写入模式打开一个名为test.txt的文件,并返回一个文件指针fp。如果文件打开失败,fopen会返回NULL,并打印错误信息。
2. fprintf函数
fprintf函数用于向文件写入数据。其基本语法与printf类似:
int fprintf(FILE *stream, const char *format, ...);
示例:
fprintf(fp, "Hello, World!\n");
这段代码将字符串"Hello, World!\n"写入到前面打开的文件中。
3. fscanf函数
fscanf函数用于从文件读取数据。其基本语法与scanf类似:
int fscanf(FILE *stream, const char *format, ...);
示例:
char buffer[100]; fscanf(fp, "%99s", buffer); // 读取最多99个字符到buffer中,防止缓冲区溢出 printf("从文件中读取到的数据是:%s\n", buffer);
这段代码会从前面打开的文件中读取一个字符串,并存储到buffer数组中。注意,这里使用了%99s来限制读取的字符数,以防止缓冲区溢出。
4. fclose函数
在完成文件操作后,应使用fclose函数关闭文件。其基本语法为:
int fclose(FILE *stream);
示例:
fclose(fp); // 关闭文件,释放资源
这段代码会关闭前面打开的文件,并释放与之相关联的资源。
总结与完整示例
下面是一个完整的示例程序,演示了标准输入输出和文件输入输出的基本用法:
#include <stdio.h> #include <stdlib.h> int main() { int a; float b; FILE *fp; char buffer[100]; // 标准输入 printf("请输入一个整数和一个浮点数:\n"); scanf("%d%f", &a, &b); printf("你输入的整数是:%d,浮点数是:%f\n", a, b); // 文件输出 fp = fopen("test.txt", "w"); if (fp == NULL) { perror("文件打开失败"); return 1; } fprintf(fp, "整数是:%d,浮点数是:%f\n", a, b); fclose(fp); // 文件输入 fp = fopen("test.txt", "r"); if (fp == NULL) { perror("文件打开失败"); return 1; } fscanf(fp, "%99[^\n]", buffer); // 读取一行文本到buffer中 printf("从文件中读取到的数据是:%s\n", buffer); fclose(fp); return 0; }
这个程序首先通过标准输入获取一个整数和一个浮点数,然后将这些数据写入到一个文件中。接着,程序打开这个文件,读取其中的数据,并通过标准输出打印出来。