代写文件的基本操作 C课程作业代写、代写C I/O文件作业

代写文件的基本操作 C课程作业代写、代写C I/O文件作业
综合训练二 文件的基本操作
一、 实验学时 4学时
二、实验目的
1.掌握文件打开、关闭、读写等操作函数的使用方法。
2.掌握包含文件操作的程序设计和调试方法。
三、实验内容
1. 建立文件data.tat,从键盘上向data1.dat文件写入10个实型数据,同时在显示器上输出(使用fscanf和fprintf函数实现)。
编程提示:
(1)使用文件的打开、关闭、写入等函数;
(2)首先打开文件,然后写入10个数,最后关闭文件。
程序如下:
#include <stdio.h>
main()
{ FILE *fp; /* 定义一个文件指针变量fp */
int i;
float x;
fp=fopen("data1.dat","w"); /* 创建文件时,以写方式打开文本文件 */
for(i=1;i<=10;i++)
{ scanf("%f",&x); /* 将数据读入x */
  fprintf(fp,"%f\n",x); /* 将数据输出到文件data中,即写到data中 */
 printf("%f\n",x); 
       /*将数据输出到屏幕上,以察看文件内容是否与之前的输入一致*/
}
fclose(fp); /* 读文件结束,关闭文件 */
}

说明:格式化读写函数 fscanf、fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。
 这两个函数的调用格式为:
      fscanf(文件指针,格式字符串,输入表列);
fprintf(文件指针,格式字符串,输出表列);
例如: fscanf(fp,"%d%s",&i,s); fprintf(fp,"%d%c",j,ch);


2. 从键盘上输入10个整数,并写入到一磁盘文件中,然后再读取输出(使用fread和fwrie函数实现)。
程序如下:
#include "stdio.h"
main( )
{ FILE *fp;
int i,j,k;
int a[10],b[10];
char filename[20];
printf("Enter the file name:");
gets(filename); /*输入要建立的磁盘文件名*/
fp=fopen(filename,"wb"); /*以二进制写方式建立磁盘文件*/
for(i=0;i<10;i++)
{ scanf("%d",&a[i]); /*从键盘输入整数,读入到内存*/
fwrite(a+i,sizeof(int),1,fp); /*从内存中写到磁盘上*/
}
fclose(fp); /*关闭文件*/
fp=fopen(filename,"rb"); /*以二进制只读方式打开磁盘文件*/
for(i=0;i<10;i++)
{ fread(b+i,sizeof(int),1,fp); /*从磁盘上读入内存*/
printf("%6d",b[i]); } /*在显示器上输出显示*/
printf("\n");
fclose(fp); /*关闭文件*/
}
说明:该程序中使用了fread函数和fwrite函数用来读写一组数据,要注意这两个函数的各个参数项的含义。本程序中fwrite(a+i,sizeof(int),1,fp)的第一个参数a+i用来代表从内存中向文件输出的数据的首地址,第二个参数sizeof(int)用来表示每次读取的字节数,由于是整数,可以用sizeof()函数返回int数据的字节数,或者直接写为2亦可.

3. 建立一个磁盘文件fsin,其内容是0~90°之间每隔5°的正弦值。
程序如下:
#include<stdio.h>
#include<math.h>
#define PI 3.14159
main( )
{
FILE *fp;
float S[19];
int i, a;
if((fp=fopen(“fsin”, “wb”))==NULL)
{ printf(“Cannot open file.\n”);
exit(0);
}
for(i=0,a=-5; i<19; i++)
{a+=5;
S[i]=sin(a*PI/180.0);
If (fwrite(S,sizeof(S), 1, fp) != 1)
printf(“File error.”);
fclose(fp);
}
}

4.把上题所建立的文件fsin的内容读出并打印。
程序如下:
#include<stdio.h>
main( )
{
FILE *fp;
float S[19];
int i, a;
if((fp=fopen(“fsin”,“rb”))==NuLL)
{ printf(“Cannot open file.\n”);
exit(0);
}
if (fread(S, sizeof(S), 1, fp) != 1)
printf(“File error.”);
printf(“\n I sin(i) \n\n”);
for(i=0,a=-5; i<19; i++)
{ a+=5;
printf(“%2d%11.4f\n”, a, S[i]);
}
fclose(fp);
}

5. 从键盘输入若干行字母,(每行长度不等)输入后把他们存储到一磁盘文件text.txt中.再从该文件读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出.。
程序如下:
#include "stdio.h"
main ( )
{
int i, flag;
char c, str[80];
FILE *fp;
fp=fopen("text.txt","w"); /*以只写方式建立或者打开磁盘文件*/
flag=1; /*置标志变量flag的值为1*/
while (flag==1)
{ printf("\nInput string:\n");
gets(str); /*输入一行字符串*/
fprintf(fp,"%s",str); /*从内存中写到磁盘文件中*/
printf("\nCountiune?"); /*是否继续输入下一行*/
c=getchar( );
if ((c=='N')|| (c=='n'))
flag=0; /*如果不继续输入,置标志变量flag的值为0*/
}
fclose(fp);
fp=fopen("text.txt","r"); /*以只读方式建立或者打开磁盘文件*/
while (fscanf(fp,"%s",str)!=EOF) /*判定是否读到文件末尾*/
{ for(i=0;str[i]!='\0';i++)
if((str[i]>='a')&&(str[i]<='z'))
str[i]= str[i]-32; /*将小写字母转换成对应的大写字母*/
printf("\n%s\n",str);
}
fclose(fp);
}
说明:该程序定义了一个一维字符数组来存放输入的一行字符串,,在程序中通过从键盘上输入一个字符来确定是否继续输入字符串,要注意的是程序中设置了标志变量来判定是否要继续。


6. 利用fwrite与fread函数建立一个存放学生电话簿的二进制数据文件,并读取其中的数据。
编程提示:电话簿为结构体类型,其中包含姓名、电话号码。先建立该文件,文件名由用户从键盘输入,读进字符数组filename中。
程序如下:
#include "stdio.h"
main( )
{ FILE *fp; int i;
char filename[40];      /* filename用于存放数据文件名 */
struct tel
{ char name[20], tel[9]; } in[5], out[5];
 clrscr( );
printf("filename: ");
gets(filename);
if ((fp=fopen(filename,"wb"))==NULL)
{ printf("Can't open the %s\n",filename);
exit(0);
}
for(i=0; i<5; i++)
{ printf("name: ");
gets(in[i].name);
printf("tel: ");
gets(in[i].tel);
}
fwrite(in, sizeof(struct tel), 5, fp);  /* 文件中写入5个学生的电话 */
fclose(fp);  /* 建立文件结束,关闭文件 */
printf("\n\n outfile:\n");
fp=fopen(filename,"rb");  /* 以读方式打开二进制文件 */
fread(out,sizeof(struct tel),5,fp);   /* 从文件读取5个结构体数据 */
printf("name telephone\n");
for(i=0; i<5; i++)
printf("%-20s%-8s\n",out[i].name,out[i].tel);
fclose(fp); /* 读文件结束,关闭文件 */
}


7.从键盘输入两个学生数据,写入到一个磁盘文件中,再从文件中读出这两个学生的数据显示在屏幕上。
程序如下:
#include "stdio.h"
struct stu /*定义一个结构体*/
{
char name[10];
int num;
int age;
char addr[15];
}s1[2],s2[2];
main( )
{
FILE *fp;
char ch;
int i;
if((fp=fopen("e:\\stu_list.dat","wb"))==NULL)
/*以二进制写方式建立磁盘文件*/
{
printf("Cannot open file strike any key exit!");
exit(0);
}
printf("\ninput data:\n");
for(i=0;i<2;i++)
scanf("%s%d%d%s",s1[i].name,&s1[i].num,&s1[i].age,s1[i].addr);
for(i=0;i<2;i++)
fwrite(&s1[i],sizeof(struct stu),2,fp); /*从内存中写到磁盘上*/
fclose(fp); /*关闭文件*/
fp=fopen("e:\\stu_list.dat","rb"); /*以二进制只读方式打开磁盘文件*/
for(i=0;i<2;i++)
{ fread(&s2[i],sizeof(struct stu),2,fp); /*从磁盘上读入内存*/
printf("%s\t%d\t%d\t%s\t",s2[i].name,s2[i].num,s2[i].age,s2[i].addr);
printf("\n");}
fclose(fp); /*关闭文件*/
}
说明:本例程序定义了一个结构体stu,说明了两个结构数组s1和s2。程序中以只写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中,然后以只读方式打开该二进制文件,把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。

8. 用fscanf和fprintf函数解决上题中的问题。
程序如下:
#include "stdio.h"
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}s1[2],s2[2];
main()
{
FILE *fp;
char ch;
int i;
if((fp=fopen("e:\\stu_list.dat","wb"))==NULL)
{
printf("Cannot open file strike any key exit!");
exit(0);
}
printf("\ninput data:\n");
for(i=0;i<2;i++)
scanf("%s%d%d%s",s1[i].name,&s1[i].num,&s1[i].age,s1[i].addr);
for(i=0;i<2;i++)
fprintf(fp,"%s\t%d\t%d\t%s\t",s1[i].name,s1[i].num,s1[i].age,
s1[i].addr);
fclose(fp);
fp=fopen("e:\\stu_list.dat","rb");
for(i=0;i<2;i++)
{ fscanf(fp,"%s%d%d%s",s2[i].name,&s2[i].num,&s2[i].age,s2[i].addr);
printf("%s\t%d\t%d\t%s\t",s2[i].name,s2[i].num,s2[i].age,s2[i].addr);
printf("\n");}
fclose(fp);
}
说明:fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。

9.有5个学生有三门课的成绩,从键盘输入以上数据(包括学号、姓名、三门课的成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.dat”中。
程序如下:
#include "stdio.h"
struct student
{ char num[6];
char name[8];
int score[3];
float ave;
} stu[5];
main( )
{ int i,j,sum;
FILE *fp;
for(i=0;i<5;i++)
{ printf("\ninput score of sudent %d:\n",i+1);
printf("number:");
scanf("%s",stu[i].num);
printf("name: ");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{ printf("score %d: ",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("stu", "w");
for(i=0;i<5;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");
fclose(fp);

/*将文件输出到显示器上,以检查文件内容*/
fp=fopen("stu", "r");
for(i=0;i<5;i++)
{ fread (&stu[i],sizeof(struct student),1,fp);
printf("\n%s,%s,%d,%d,%d,%6.2f\n",stu[i].num,stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
}
}
说明:数据块读写函数fread和fwrite
C语言提供了用于整块数据的读写函数fread和fwrite。 可用来读写一组数据,如一个数组元素,一个结构变量的值等等。
读数据块函数调用的一般形式为: fread(buffer,size,count,fp);
写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp);
其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。 size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。
例如:fread(fa,4,5,fp); 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。
http://www.6daixie.com/contents/13/1363.html

本团队核心人员组成主要包括硅谷工程师、BAT一线工程师,国内Top5硕士、博士生,精通德英语!我们主要业务范围是代做编程大作业、课程设计等等。

我们的方向领域:window编程 数值算法 AI人工智能 金融统计 计量分析 大数据 网络编程 WEB编程 通讯编程 游戏编程多媒体linux 外挂编程 程序API图像处理 嵌入式/单片机 数据库编程 控制台 进程与线程 网络安全  汇编语言 硬件编程 软件设计 工程标准规等。其中代写代做编程语言或工具包括但不限于以下范围:

C/C++/C#代写

Java代写

IT代写

Python代写

辅导编程作业

Matlab代写

Haskell代写

Processing代写

Linux环境搭建

Rust代写

Data Structure Assginment 数据结构代写

MIPS代写

Machine Learning 作业 代写

Oracle/SQL/PostgreSQL/Pig 数据库代写/代做/辅导

Web开发、网站开发、网站作业

ASP.NET网站开发

Finance Insurace Statistics统计、回归、迭代

Prolog代写

Computer Computational method代做

因为专业,所以值得信赖。如有需要,请加QQ:99515681 或邮箱:[email protected]

微信:codinghelp

猜你喜欢

转载自www.cnblogs.com/beautyful/p/8992805.html