C语言是一种通用的、过程式的计算机编程语言,广泛应用于各种软件开发领域,在C语言中,输入和输出是程序与用户之间进行交互的重要方式,本文将详细介绍C语言中的输入和输出操作,包括基本的输入输出函数、格式化输入输出以及文件操作等内容。

基本输入输出函数

1、printf()函数:用于输出数据到屏幕或文件中,其原型为:

int printf(const char *format, ...);

format是一个字符串,用于指定输出数据的格式;...表示可变参数列表,用于传递需要输出的数据。

2、scanf()函数:用于从标准输入设备(通常是键盘)读取数据,其原型为:

int scanf(const char *format, ...);

format是一个字符串,用于指定输入数据的格式;...表示可变参数列表,用于存储读取到的数据。

格式化输入输出

1、格式化输出:使用printf()函数时,可以通过格式化字符串来控制输出数据的格式,常用的格式化字符有:

- %d:输出十进制整数;

- %f:输出浮点数;

- %c:输出一个字符;

- %s:输出一个字符串;

- %x%X:以十六进制形式输出整数;

- %o:以八进制形式输出整数。

以下代码将输出一个整数和一个浮点数:

#include <stdio.h>
int main() {
    int a = 10;
    float b = 3.14;
    printf("a = %d, b = %.2f
", a, b);
    return 0;
}

2、格式化输入:使用scanf()函数时,可以通过格式化字符串来控制输入数据的格式,常用的格式化字符与printf()函数相同,以下代码将从键盘输入一个整数和一个浮点数:

#include <stdio.h>
int main() {
    int a;
    float b;
    printf("请输入一个整数和一个浮点数:");
    scanf("%d %f", &a, &b);
    printf("a = %d, b = %.2f
", a, b);
    return 0;
}

文件操作

除了标准输入输出设备外,C语言还可以通过文件进行输入输出操作,以下是一些常用的文件操作函数:

1、fopen()函数:用于打开一个文件,其原型为:

FILE *fopen(const char *filename, const char *mode);

filename是要打开的文件名;mode是文件打开模式,如"r"表示只读模式,"w"表示写入模式,"a"表示追加模式等,返回值是一个指向FILE结构体的指针,如果打开失败则返回NULL。

2、fclose()函数:用于关闭一个文件,其原型为:

int fclose(FILE *stream);

stream是已打开的文件指针,成功关闭文件后返回0,否则返回非0值。

3、fprintf()函数:用于向文件中写入数据,其原型为:

int fprintf(FILE *stream, const char *format, ...);

stream是已打开的文件指针;format...的含义与printf()函数相同,成功写入数据后返回写入的字节数,否则返回负值。

4、fscanf()函数:用于从文件中读取数据,其原型为:

int fscanf(FILE *stream, const char *format, ...);

stream是已打开的文件指针;format...的含义与scanf()函数相同,成功读取数据后返回读取的变量个数,否则返回EOF(End Of File),EOF是一个特殊的值,表示文件结束或读取错误。

5、feof()函数:用于判断文件是否到达末尾,其原型为:

int feof(FILE *stream);

stream是已打开的文件指针,如果文件到达末尾则返回非0值,否则返回0,注意,当读取到EOF时,feof()函数也会返回非0值,在判断文件是否到达末尾时,还需要检查读取操作是否成功。

while (!feof(file) && fscanf(file, "%d", &n) == 1) { /* 处理数据 */ }

示例代码

以下是一个完整的C语言程序示例,该程序从键盘输入两个整数,计算它们的和并输出结果,然后将结果写入到一个文件中:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h> // for strerror() function in case of error opening file for writing or reading data from it. FILE *fp; int n1, n2, sum; fp = fopen("result.txt", "w"); if (fp == NULL) { printf("Error opening file for writing! Error code: %d - %s", errno, strerror(errno)); exit(EXIT_FAILURE); } printf("Enter two integers: "); scanf("%d %d", &n1, &n2); sum = n1 + n2; printf("Sum: %d
", sum); fprintf(fp, "Sum: %d
", sum); fclose(fp); fp = fopen("result.txt", "r"); if (fp == NULL) { printf("Error opening file for reading! Error code: %d - %s", errno, strerror(errno)); exit(EXIT_FAILURE); } while (!feof(fp)) { printf("%s", fgets(buffer, sizeof(buffer), fp)); } fclose(fp); return 0; } int main() { /* Your code here */ } output: Enter two integers: 5 7 Sum: 12 Sum: 12