文件的范例

来源:互联网 发布:非法集资判定知不知情 编辑:程序博客网 时间:2024/06/01 12:35

范例12.1
编写一个程序,从键盘上输入一个字符写至文件中。

#include <stdio.h>void main(){    FILE *fp;    char c;    printf("输入要写入的字符:");    scanf("%c",&c);    if ((fp = fopen("file.txt", "w")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    fputc(c,fp);    fclose(fp);}
  • 定义一个文件指针fp;
  • 通过判断fopen()函数的返回值确定file.txt 是否被正常的打开
  • 将输入的字符写至fp所指的文件中
  • 利用fclose()函数关闭文件指针

范例12.2
利用fputc()函数将一串字符串写入文件中,直到遇到“*”截至

#include <stdio.h>#include <stdlib.h>void main(){    FILE *fp;    char c;    if ((fp = fopen("file.txt", "w")) == NULL);    {        printf("打开文件出错\n");        exit(1);    }    c = getchar();    while (c != '*')    {        fputc(c, fp);        c = getchar();    }    fclose(fp);}

范例12.3
磁盘上有一名为cfile.txt的文本文件,编写程序读出该文件中的所有内容。

#include <stdio.h>#include <stdlib.h>void main(){    FILE *fp;    char c;    if ((fp = fopen("cfile.txt", "r")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    c = fgetc(fp);    while (c != EOF)    {        putchar(c);        c = fgetc(fp);    }    fclose(fp);}

范例12.4现有一个data.txt中存储了10名学生的信息,编写程序读取文件中的内容,并将其显示在屏幕上。

#include <stdio.h>#include <stdlib.h>struct st{    char name[20];    int age;    char sex;    float score;}s[10];void main(){    FILE *fp;    int i;    if ((fp = fopen("data.txt", "r")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    for (i = 0; i < 10; i++)    {        fread(&s[i], sizeof(struct st), 1, fp);    }    for (i = 0; i < 10; i++)        printf("%s %d %c %f\n",s[i].name,s[i].age,s[i].sex,s[i].score);    fclose;}

范例12.5 修改范例12.4实现从键盘上输入这10名学生的信息,将这些信息写入文本中。

#include <stdio.h>#include <stdlib.h>struct st{    char name[20];    int age;    char sex;    float score;}s[10];void main(){    FILE *fp;    int i;    if ((fp = fopen("student.txt", "w")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    for (i = 0; i < 10; i++)        scanf("%s %d %c %f", s[i].name, &s[i].age, &s[i].sex, &s[i].score);    for (i = 0; i < 10; i++)        fwrite(&s[i],sizeof(struct st),1,fp);    fclose(fp);}

范例12.6 利用fprintf()函数,写入若干个学生的信息至文件中。

#include <stdio.h>#include <stdlib.h>struct st{    char name[20];    int age;    char sex;    float score;}s[5];void main(){    FILE *fp;    int i;    if ((fp = fopen("stud.txt", "w")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    for (i = 0; i < 5; i++)        scanf("%s%d%c%f",s[i].name,&s[i].sex,&s[i].score);    for (i = 0; i < 5; i++)        fprintf(fp,"%s %d %c %f",s[i].name,s[i].age,s[i].sex,s[i].score);    fclose(fp);}

范例12.7
从data.txt文件中读取信息至屏幕上

#include <stdio.h>#include <stdlib.h>struct st{    char name[20];    int age;    char sex;    float score;}s[5];void main(){    FILE *fp;    int i;    if ((fp = fopen("stud.txt", "w")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    for (i = 0; i < 5; i++)        fscanf(fp,"%s %d %c %f",s[i].name,&s[i].age,&s[i].sex,&s[i].score);    for (i = 0; i < 5; i++)        printf("%s,%d %c %f\n",s[i].name,s[i].age,s[i].sex,s[i].score);    fclose(fp);}

范例12.8 从磁盘上读取一文件显示在屏幕上,然后将该文件中内容复制到另一文件中。

#include <stdio.h>void main(){    FILE *fp1, *fp2;    char c;    fp1 = fopen("a.txt", "r");    fp2 = fopen("b.txt", "w");    while (!feof(fp1))    {        c = fgetc(fp1);        putchar(c);    }    rewind(fp1);    while (!feof(fp2))    {        c = fgetc(fp1);        fputc(c, fp2);    }    fclose(fp1);    fclose(fp2);}

范例12。10
现有一磁盘文件file.txt,其内容如下:

#include <stdio.h>#include <stdlib.h>void main(){    FILE *fp;    long p;    if ((fp = fopen("file.txt", "a+")) == NULL)    {        printf("打开文件出错\n");        exit(1);    }    p = ftell(fp);    printf("当前指针位置%ld\n",p);    fseek(fp, 0, 2);    p = ftell(fp);    printf("当前指针位置%ld\n",p);    fputs("This is a c program!", fp);    p = ftell(fp);    printf("当前指针位置为%ld\n", p);    fclose(fp);}

范例12.11
将磁盘中的一个文件内容复制到另一个文件中。

#include <stdio.h>#include <stdlib.h>void main(){    FILE *fp1, *fp2;    char ch;    char in[10];    char out[10];    printf("输入要复制的文件名: ");    scanf("输入要复制到哪一个文件:");    if ((fp1 = fopen(in, "r")) == NULL)    {        exit(0);    }    if ((fp2 = fopen(out, "w")) == NULL)    {        printf("不能打开文件\n");        exit(0);    }    while (!feof(fp1))    {        ch = fgetc(fp1);        fputc(ch, fp2);        fclose(fp1);        fclose(fp1);    }}

范例12.12
现有一文件记录了10名学生的信息,包括姓名,学号,及4门科目的成绩,要求从文件中读取出数据并计算4门科目的平均成绩,写至另外一个文件中。

#include <stdio.h>#include <stdlib.h>void main(){    void f();    char s[][10] = { "学号","姓名","语文","数学","计算机","平均成绩" };    f(s);}void f(char (*p)[10]){    FILE *fp;    int score[10][4];    float aver[10];    char xuehao[10][10], name[10][20];    char t[5];    int i, j, k = 0;    float a[10], *p1;    p1 = a;    fp = fopen("stuin.txt","r");    for (i = 0; i < 10; i++)    {        fscanf(fp,"%s",xuehao[i]);        fscanf(fp,"%s",name[i]);        for(j=0;j<4;j++)        fscanf(fp,"%f",score[i][j]);        *(p1 + i) = (score[i][0] + score[i][0] + score[i][2] + score[i][3]) / 4.0;    }    fclose(fp);    fp = fopen("stuout.txt", "w");    for (i = 0; i < 10; i++)    {        fprintf(fp,"%10s",xuehao[i]);        fprintf(fp, "%10s", name[i]);        for (j = 0; i < 4; j++);        fprintf(fp,"%3d",score[i][j]);        fprintf(fp,".1f%f",*(p1+i));    }    fclose(fp);    fp = fopen("stuout.txt", "r");    for (i = 0; i < 10; i++)    {        fscanf(fp,"%s",xuehao[i]);        fscanf(fp,"%s",name[i]);        for (j = 0; j < 4; j++);        fscanf(fp,"%d",score[i][j]);        fscanf(fp, "%f", a[i]);    }    for (i = 0; i < 10; i++)    {        printf("%10s%10s%3d%3d%3d%3d%6.1f\n",xuehao[i],name[i],score[i][0],score[i][i],score[i][2],score[i][3],a[i]);    }    fclose(fp);}

1、f 函数不接受1个参数
2、从double转换为float 可能丢失数据
3、fopen
4、fscanf()
5、格式字符串%f需要类型float的参数,但可变参数1拥有了类型int
6、

0 0
原创粉丝点击