1、源程序
#include "stdlib.h"
#include "stdio.h"
#define N 3
typedef struct me
{
int num;
char name[10];
char tell[11];
}STYPE;
void input(STYPE * std)
{
int i;
printf("Now i'll input:\n");
for(i=0;i<N;i++)
scanf("%d%s%s",&std[i].num,std[i].name,std[i].tell);
printf("back from input");
}
int fun(STYPE *std)
{
FILE *fp;
int i;
if((fp=fopen("c:\\m3.txt","wb"))==NULL)
return 0;
printf("\nOutput data to file!\n");
for(i=0;i<N;i++)
{
fwrite(&std[i],sizeof(STYPE),1,fp);
}//for
fclose(fp);
return 1;
}//fun
void check()
{
FILE *fp;
int i;
STYPE s[N];
if((fp=fopen("c:\\m3.txt","rb"))==NULL)
{printf("\nFail\n"); exit(0);}
printf("\nRead file and output to screen:\n");
printf("\n num name tel\n");
for(i=0;i<N;i++)
{
fread(&s[i],sizeof(STYPE),1,fp);
printf("%6d %s %s\n",s[i].num,s[i].name,s[i].tell);
}//for
fclose(fp);
}
int main()
{
STYPE s[N];
int k;
input(s);
k=fun(s);
if(k==1)
{
printf("Succeed");
check();
}//if
else printf("Fail!");
}
2、上面的程序中涉及如下函数:
1) fprintf是用于文件操作的,原型是int fprintf(FILE *fp,char *format,…...),将格式化数据写入流文件之中,同理fscanf,int fscanf(FILE *fp, char *format,......?)。
2) int fputc(int ch, file *fp),将字符ch(舍去了高位字节)写入到fp文件指针的当前位置处。相反,intfgetc(FILE *fp)是从文件的当前位置读一们字符。
3) char *fgets(char *str, int num,FILE *fp),从文件指针的当前位置读一行字符数不大于num-1的字符组存入str所指向的字符数组指针中。成功是返回str指针,失败返回NULL。
4) int fputs(char *str, file *fp),则在当位置写入一个字符串。成功返回写入的字符,错误返回EOF。
5) int feof(FILE *stream) 检测文件指针是否到达结尾,是返回1,没有到达结尾返回0。