C语言中有哪些高级I/O函数?
I/O指的是C语言中的输入输出函数。
高级I/O
- 这些很容易被人理解。
- 优点是可移植性。
低级I/O
- 这些很容易被计算机理解。
- 优点是执行时间较短。
- 缺点是不可移植。
高级I/O函数
下面解释高级输入输出(I/O)函数:
| 函数 | 描述 |
|---|---|
| fprintf ( ) | 将数据写入文件 |
| fscanf ( ) | 从文件读取数据 |
| putc ( )/ fputc() | 将字符写入文件 |
| getc ( ) /fgetc() | 从文件读取字符 |
| putw ( ) | 将数字写入文件 |
| getw ( ) | 从文件读取数字 |
| fputs ( ) | 将字符串写入文件 |
| fgets ( ) | 从文件读取字符串 |
| fread() | 从文件读取整个记录 |
| fwrite() | 将整个记录写入文件 |
fprintf ( ) & fscanf ( ) 函数
- fprintf ( )
语法如下:
fprintf (file pointer, " control string”, variable list)
例如:
FILE *fp; fprintf (fp, "%d%c”, a,b);
- fscanf ( )
语法如下:
fscanf(file pointer, "control string”, & variable list);
例如:
FILE *fp; fscanf (fp, "%d%c”, &a,&b);
putc( ) 和 getc( ) 函数
- putc ( )
用于将字符写入文件。
语法如下:
putc (char ch, FILE *fp);
例如:
FILE *fp; char ch; putc(ch, fp);
- getc ( )
用于从文件读取字符。
语法如下:
char getc (FILE *fp);
例如:
FILE *fp; char ch; ch = getc(fp);

putw ( ) 和 getw ( ) 函数
- putw( )
用于将数字写入文件。
语法如下:
putw (int num, FILE *fp);
例如:
FILE *fp; int num; putw(num, fp);
- getw ( )
用于从文件读取数字。
语法如下:
int getw (FILE *fp);
例如:
FILE *fp; int num; num = getw(fp);

fputc ( ) 和 fgetc ( ) 函数
- fputc( )
用于将字符写入文件。
语法如下:
fputc (char ch, FILE *fp);
例如:
FILE *fp; char ch; fputc (ch.fp);
- fgetc( )
用于从文件读取字符。
语法如下:
fputc (char ch, FILE *fp);
例如:
FILE *fp; char ch; ch = fgetc(fp);
fgets ( ) 和 fputs ( ) 函数
- fgets ( )
用于从文件读取字符串。
语法如下:
fgets (string variable, No. of characters, File pointer);
例如:
FILE *fp; char str [30]; fgets (str,30,fp);
- fputs ( )
用于将字符串写入文件。
语法如下:
fputs (string variable, file pointer);
例如:
FILE *fp; char str[30]; fputs (str,fp);

fread ( ) 和 fwrite ( ) 函数
- fread ( )
用于一次读取整个记录。
语法如下:
fread( & structure variable, size of (structure variable), no of records, file pointer);
例如:
struct emp{
int eno;
char ename [30];
float sal;
} e;
FILE *fp;
fread (&e, sizeof (e), 1, fp);- fwrite ( )
用于一次写入整个记录。
语法如下:
fwrite( & structure variable , size of structure variable, no of records, file pointer);
例如:
struct emp{
int eno:
char ename [30];
float sal;
} e;
FILE *fp;
fwrite (&e, sizeof(e), 1, fp);示例程序
以下是将数字1到10存储到文件中并打印它们的C程序:
//Program for storing no’s from 1 to 10 and print the same
#include<stdio.h>
int main( ){
FILE *fp;
int i;
fp = fopen ("num.txt", "w");
for (i =1; i<= 10; i++){
putw (i, fp);
}
fclose (fp);
fp =fopen ("num.txt", "r");
printf ("file content is");
for (i =1; i<= 10; i++){
i= getw(fp);
printf ("%d",i);
}
fclose (fp);
return 0;
}输出
执行上述程序后,将产生以下结果:
file content is12345678910
下面是另一个C程序,它使用fread()和fwrite()将5个学生的详细信息存储到文件中并打印出来:
示例
#include<stdio.h>
struct student{
int sno;
char sname [30];
float marks;
char temp;
};
main ( ){
struct student s[60];
int i;
FILE *fp;
fp = fopen ("student1.txt", "w");
for (i=0; i<2; i++){
printf ("enter details of student %d
", i+1);
printf("student number:");
scanf("%d",&s[i].sno);
scanf("%c",&s[i].temp);
printf("student name:");
gets(s[i].sname);
printf("student marks:");
scanf("%f",&s[i].marks);
fwrite(&s[i], sizeof(s[i]),1,fp);
}
fclose (fp);
fp = fopen ("student1.txt", "r");
for (i=0; i<2; i++){
printf ("details of student %d are
", i+1);
fread (&s[i], sizeof (s[i]) ,1,fp);
printf("student number = %d
", s[i]. sno);
printf("student name = %s
", s[i]. sname);
printf("marks = %f
", s[i]. marks);
}
fclose(fp);
getch( );
}输出
执行上述程序后,将产生以下结果:
enter details of student 1 student number:1 student name:bhanu student marks:50 enter details of student 2 student number:2 student name:priya student marks:69 details of student 1 are student number = 1 student name = bhanu marks = 50.000000 details of student 2 are student number = 2 student name = priya marks = 69.000000
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP