C语言读写文件

1.从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个'#'

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch,filename[10];
    printf("请输入所用的文件名:");
    scanf("%s",filename);
    if((fp=fopen(filename,"w"))==NULL)
    {
        printf("无法打开文件\n");
        exit(0);
    }
    ch = getchar();
    printf("请输入一个准备存储到磁盘的字符串(以#结束):");
    ch = getchar();
    while(ch!='#')
    {
        fputc(ch,fp);
        putchar(ch);
        ch = getchar();
    }
    fclose(fp);
    putchar(10);
    return 0;
}

  2.将一个磁盘文件中的信息复制到另一个磁盘文件中。

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *in,*out;
    char ch,infile[10],outfile[10];
    printf("输入读入的文件的名字:\n");
    scanf("%s",infile);
    printf("输入输出的文件的名字:\n");
    scanf("%s",outfile);
    if((in=fopen(infile,"r"))==NULL)
    {
        printf("无法打开此文件\n");
        exit(0);
    }
    if((out=fopen(outfile,"w"))==NULL)
    {
        printf("无法打开此文件\n");
        exit(0);
    }
    while(!feof(in)) //如果未遇到输入文件的结束标志
    {
        ch = fgetc(in);
        fputc(ch,out); //因为它不显示,所以显得奇怪
        putchar(ch);
    }
    putchar(10);
    fclose(in);
    fclose(out);
    return 0;
}

  3.向文件写入字符串

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fp;
    char str[3][10],temp[10];
    int i,j,k,n=3;
    printf("Enter strings:\n");
    for(i=0;i<n;i++)
        gets(str[i]);
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(str[k],str[j])>0) k=j;
        if(k!=i)
        {
            strcpy(temp,str[i]);
            strcpy(str[i],str[k]);
            strcpy(str[k],temp);
        }
    }
    if((fp=fopen("t.txt","w"))==NULL)
    {
        printf("can't open file!\n");
        exit(0);
    }
    printf("\nThe new sequence:\n");
    for(i=0;i<n;i++)
    {
        fputs(str[i],fp);
        fputs("\n",fp);
        printf("%s\n",str[i]);
    }
    fclose(fp);
    return 0;
}

  4.从文件中读取字符串

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fp;
    char str[3][10];
    int i=0;
    if((fp=fopen("t.txt","r"))==NULL)
    {
        printf("can't open file!\n");
        exit(0);
    }
   while(fgets(str[i],10,fp)!=NULL)
   {
       printf("%s",str[i]);
       i++;
   }
    fclose(fp);
    return 0;
}

  5.二进制写

#include <stdio.h>
#define SIZE 3

struct Student_type
{
    char name[10];
    int num;
    int age;
    char addr[15];
}stud[SIZE];

void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("t.txt","wb"))==NULL)
    {
        printf("can't open file\n");
        return;
    }
    for(i=0;i<SIZE;i++)
    {
        if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1)
            printf("file write error\n");
    }
    fclose(fp);
}

int main()
{
    int i;
    printf("Please enter data of students:\n");
    for(i=0;i<SIZE;i++)
    {
        scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
    }
    save();
    return 0;
}

  6.二进制读

#include <stdio.h>
#include <stdlib.h>
#define SIZE 3

struct Student_type
{
    char name[10];
    int num;
    int age;
    char addr[15];
}stud[SIZE];

int main()
{
    int i;
    FILE *fp;
    if((fp=fopen("t.txt","rb"))==NULL){
        printf("can't open file\n");
        exit(0);
    }
    for(i=0;i<SIZE;i++)
    {
        fread(&stud[i],sizeof(struct Student_type),1,fp);
        printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
    }
    fclose(fp);
    return 0;
}

  7.rewind函数

#include <stdio.h>

int main()
{
    FILE *fp1,*fp2;
    fp1 = fopen("t1.txt","r");
    fp2 = fopen("t2.txt","w");
    while(!feof(fp1)) putchar(fgetc(fp1));
    putchar(10);
    rewind(fp1);
    while(!feof(fp1)) fputc(fgetc(fp1),fp2);
    fclose(fp1);
    fclose(fp2);
    return 0;
}

  8.

posted @ 2022-10-04 17:37  kangobs  阅读(57)  评论(0编辑  收藏  举报