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。

 

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