//指向文件类型的指针
//在C语言的文件你的读写一般使用系统的库函数来对数据进行读写
//文件的类型的指针
//文件的结构
#include <iostream>
#include <cstdio>
using namespace std;
typedef struct
{
short level;
//缓冲区满或者是空的程度
unsigned flags;
//文件状态标志
char fd;
//文件描述符
unsigned hold;
//如无缓冲区不读取字符
short basize;
//缓冲区的大小
unsigned char *buffer;
//数据缓冲区的位置
unsigned char *curp;
//指针当前的指向
unsigned istemp;
//临时文件
short token;
//用于有效性的检查
}FILE;
//指向文件的指针
FILE *fp;
//例如下面的例子
//输入一个字符并且显示在屏幕
#include <stdio.h>
int main()
{
char ch = getchar();
putchar();
return 0;
}
//scanf()函数原型是
//int scanf(char const *format...);
//
//putchar()函数
//原型是
//int putchar(int character)
//例子
#include <stdio.h>
int main()
{
char ch = ‘a‘;
puchar(ch);
//输出字符a
putchar(‘\n‘);
putchar(‘abc‘);
//只输出一个字符
putchar(‘\101‘);
//输出字符‘A‘
putchar(‘\015‘);
//输出回车,不换行,使光标当前位置移到本行的开头
putchar(‘\‘‘);
//输出单引号字符
return 0;
}
//文件加工场
//功能 ===== //函数
//打开或关闭 fopen(),fclose();
//读写字符 fgetc(),fputc();
//读写字符串 fgets(),fputs();
//按数据块读写 fread(),fwrite()
//格式化读写 fscanf(),fprintf()
//文件定位 fseek(),rewind(),ftell()
//判断文件是否结束 feof();
//
//应用举例:
#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, char *argv[])
{
//判断参数个数
if(argc != 3)
{
printf("the number of arguments not correct!\n");
exit(1);
}
FILE *fpr, *fpw;
//打开源文件
if((fpr = fopen(argv[1], ‘r‘)) == NULL)
{
printf("open source file error!");
exit(1);
}
//打开目标文件
if((fpw = fopen(argv[2], ‘w‘)) == NULL)
{
printf("open destination file error!");
exit(1);
}
char ch;
//复制源文件到目标文件,每次读写一个字符
while((ch = fget(fpr)) != EOF)
{
fputc(ch, fpw);
}
//关闭源文件,目标文件
fclose(fpr);
fclose(fpw);
return 0;
}
//合并两个已经按照递增排序的顺序的整数文件成为一个按递增的文件排序的文件
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *fp1;
FILE *fp2;
FILE *fp3;
int t1, t2;
if(agrc != 4)
{
printf("The number of arguments not correct!\n");
exit(1);
}
if((fp1 = fopen(argv[1], "r")) == NULL)
{
printf("open source file1 error\n");
exit(1);
}
if((fp2 = fopen(argv[2], "r")) == NULL)
{
printf("open source file2 error\n");
exit(1);
}
if((fp3 = fopen(argv[3], "r")) == NULL)
{
printf("open source file3 error\n");
exit(1);
}
fread(&t1, sizeof(int), 1, fp1);
fread(&t2, sizeof(int), 2, fp2);
while(! feof(fp1) && !feof(fp2))
{
if(t1 < t2)
{
fwrite(&t1.sizeof(int), 1, fp3);
fread(&t1, sizeof(int), 1, fp);
}
else
{
fwriter(&t2, sizeof(int), 1, fp3);
fwriter(&t2, sizeof(int), 1, fp2);
}
}
while(! feof(fp1))
{
fwrite(&t1.sizeof(int), 1, fp3);
fwrite(&t1,sizeof(int), 1, fp1);
}
while(!feof(fp2))
{
fwrite(&t2, sizeof(int), 1, fp3);
fwrite(&t2, sizeof(int), 1, fp2);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}