C语言 文件的读写

字符读写:
fgetc 调用形式fgetc(fp) 从fp指向的文件读入一个字符
fputc 调用形式fputc(ch,fp) 把字符ch写到文件指针变量fp所指的文件中

/*从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入“#”结束为止,这个程序只需要从键盘逐个输入字符,然后用fputc函数写到磁盘文件即可。字符数组filename用来存放文件名,也可以直接指定。*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
    printf("Input filename:");
	scanf("%s", filename);
	fp = fopen(filename, "w");//打开输出文件
	if (!fp)//检查打开的操作是否有错
	{
		printf("file open failed!\n");
		exit(0);//关闭所有文件使程序终止
	}
	ch=getchar();
	printf("请输入一个准备存储到磁盘的字符串:");
	ch = getchar();//接收从键盘输入的第一个字符
	while (ch != '#')
	{
		fputc(ch,fp);//输出一个字符
		putchar(ch);//将输出字符显示在屏幕上
		ch = getchar();//接收字符
	}
	fclose(fp);
	putchar(10);//向屏幕输出一个换行符,换行符的ASCII代码为10
}

将存入磁盘文件中的信息复制到另一个磁盘文件,从已有数据的磁盘文件中逐个读入字符,然后逐个输出到新复制的磁盘文件名

char srcName[20];
	char desName[20];
	printf("input src File Name:");
	scanf("%s", srcName);
	printf("input des File Name:");
	scanf("%s", desName);

	fpSrc = fopen(srcName, "r");//srcName为变量不可带""
	fpDes = fopen(desName, "w");
	if (!(fpSrc && fpDes))
	{
		printf("file open failed!");
	}
	while (!feof(fpSrc))//如果未遇到输入文件的结束标志
	{
		ch = fgetc(fpSrc);//从输入文件读入一个字符,暂放在变量ch中
		fputc(ch, fpDes);//将ch写到目标文件
		putchar(ch);//将ch显示在屏幕上
	}
	putchar(10);//显示完全部字符后换行
	fclose(fpSrc);
	fclose(fpDes);

二进制方式读写(数据块读写):
fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)
buffer:一个地址。对fread来说,是输入数据的存放地址;对fwrite来说,是要输出数据的地址(起始地址)
size:读写的字节数
count:要进行读写多少个size字节的数据项
fp:文件型指针

/*从键盘输入学生的有关数据,然后把它们转存到磁盘文件上*/
/*定义一个结构体数组stud,有size个元素,每个元素用来存放一个学生的数据。
假设学生的数据已存放在磁盘文件中,用fread函数读入学生的数据,用fwrite函数将内存中学生的数据输出到磁盘文件中*/
#include<stdio.h>
int main()
{
	FILE *fp;
	int score[5];
	int i;
	printf("input data  array:\n");
	for ( i = 0; i < 5; i++)
	{
		scanf_s("%d", &score[i]);
	}
	fp = fopen("score.dat", "wb");//以二进制方式写数据
	if (!fp)
	{
		printf(" file open filed!");

	}
	fwrite(score,sizeof(int),5,fp);//输出数据
	fclose(fp);

	fp = fopen("score.dat", "rb");

	int curScore;
	while (!feof(fp))
	{
		fread(&curScore, sizeof(int), 1, fp);//从fp中读入一组数据
		printf("%d\t",curScore);
	}
	fclose(fp);
	return 0;
}

字符串读写:
fgets 调用形式fgets(str,n,fp) 从fp指向的文件读入一个长度为(n-1)的字符串,存放到字符数组str中
fputs 调用形式fputs(ch,fp) 把字符str写到文件指针变量fp所指的文件中

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	FILE *fp;
	char str[3][10], temp[10];
	int i, j, k;
	int n = 3;
	printf("Enter strings:\n");
	for (int i = 0; i < n; i++)
	  {
		//gets(str[i]);
		scanf("%s",&str[i]);
	 }
	for (i = 0; i < n - 1; i++)//用选择法
	{
		k = i;
		for (j = i+1; j < n; j++)
		{
		if (str[k]>str[j]) 
	      {
			k = j;
			if (k != i)
    		{
   				strcpy(temp, str[i]); 
				strcpy(str[i], str[k]);
				strcpy(str[k], temp);
			}
		 }
	}
}
if ((fp = fopen("score.dat", "w")) == NULL)
	{
	  printf("cannot open file!");
	  exit(0);
    }
	  printf("The new sequence:\n");
	  for (int i = 0; i < n; i++)
	   {
	    	fputs(str[i], fp);
			fputs("\n", fp);
			printf("%s\n", str[i]);
		}
	  return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值