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。