3、文件的操作,及相关函数

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。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章