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.

浙公网安备 33010602011771号