文件

Posted deer-king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件相关的知识,希望对你有一定的参考价值。

Description

文件a.dic、b.dic、c.dic中分别存有张三的三科成绩,每个文件都是16字节:前8个字节存储其英文名字zhangsan,后面是一个空格,其后的2个字节存储其年龄(文本方式存储),后面也是一个空格,最后4个字节存储的是某科考试成绩(二进制方式存储)。键盘输入一个数字(1,2,3),根据输入的数字从相应的文件中读出张三的数据并显示。
数字和文件的对应关系是
1----a.dic
2----b.dic
3----c.dic

 

Input

输入1、2、3中的一个

Output

输出张三的数据,每项一行

Sample Input

1

Sample Output

zhangsan 18 96 
 
 

#include<stdio.h>
#include<stdlib.h>
int main()

FILE *fp;
char name[9];
int n,age,score;
scanf("%d",&n);
if(n==1)
if((fp=fopen("a.dic","r"))==NULL)

printf("打开文件失败\n");
exit(1);

if(n==2)
if((fp=fopen("b.dic","r"))==NULL)

printf("打开文件失败\n");
exit(1);

if(n==3)
if((fp=fopen("c.dic","r"))==NULL)

printf("打开文件失败\n");
exit(1);

fgets(name,9,fp);
fscanf(fp,"%d",&age);
fgetc(fp);
fread(&score,4,1,fp);
fclose(fp);
printf("%s\n%d\n%d\n",name,age,score);
return 0;

Description

用二进制方式打开文件并向文件中写了若干人的数据。其中每人的数据都有两项:其一是名字,用文本方式写的,其二是一个整数,是用二进制方式写的,两项数据之间存有一个空格,相邻两人的数据之间没有任何内容。

    键盘输入文件名,按顺序读出并显示所有人的数据
说明:
    1、所有人的名字中都不含空格,即:没有“Bill Gates”或“张 三”这样的名字
    2、文件在当前目录中,打开文件时不需要考虑盘符和路径

Input

键盘输入文件名

Output

输出所有人的数据

Sample Input

a.dic

Sample Output

张三,2000 李四,9999
 

#include<stdio.h>
#include<stdlib.h>
int main()

FILE *fp;
int grade;
char filename[10];
char name[10];
fp=fopen(gets(filename),"rb");
fscanf(fp,"%s",name); //读取名字
fgetc(fp);//取掉空格
fread(&grade,4,1,fp);//二进制读成绩
while(!feof(fp))

printf("%s,%d\n",name,grade);
fscanf(fp,"%s",name);
fgetc(fp);
fread(&grade,4,1,fp);

return 0;

 
 

Description

    用二进制方式打开文件并向文件中写了若干人的数据。其中每人的数据都有两项:其一是名字,是用文本方式写的,其二是一个整数,是用二进制方式写的,两项数据之间存有一个空格,相邻两人的数据之间(如:第一个人的整数和第二个人的名字之间)也存有一个空格。

    键盘输入文件名,按顺序读出并显示所有人的数据

说明:

    1、所有人的名字中都不含空格,即:没有“Bill Gates”或“张三”这样的名字

    2、最后一个人的数据之后,没有空格

    3、文件在当前目录中,打开文件时不需要考虑盘符和路径

Input

输入文件名

Output

读取并显示所有人的数据

Sample Input

a.dic

Sample Output

张三,1900 李四,3882 
 

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

int main()

char fileName[10];
char name[10];
char space;
int grade=0;
scanf("%s",fileName);
FILE *fp;
if((fp=fopen(fileName,"r"))==NULL)

printf("打开文件失败\n");
exit(1);

fscanf(fp,"%s",name);
fseek(fp,1,1);
fread(&grade,4,1,fp);
while(!feof(fp))

fscanf(fp,"%c",&space);
printf("%s,%d\n",name,grade);
fscanf(fp,"%s",name);
fseek(fp,1,1);
fread(&grade,4,1,fp);

fclose(fp);
return 0;

 

 
 

Description

    用二进制方式打开文件并向文件中写了若干人的数据,每人的数据都有两项:其一是名字,是用文本方式写的,其二是薪金(整数),是用二进制方式写的,名字后面和薪金后面各存有一个空格,每人都如此。除此之外文件中再无其他内容。 即:文件中数据的存储顺序是

名字 薪金 名字 薪金 名字 薪金......名字 薪金 

    文件已存在,键盘输入文件名,按顺序读出并显示所有人的数据。

    说明:
    1、所有人的名字中都不含空格,即:没有诸如“Bill Gates” 之类的名字
    2、最后一个人的薪金之后,也有一个空格
    3、文件在当前目录中,打开文件时不需要考虑盘符和路径

    提示:若需要一个文件来验证程序的运行结果,可自行编程建立一个

Input

输入文件名

Output

输出所有人的数据

Sample Input

a.dic

Sample Output

zhangsan,2000 lisi,8000 
 
 

#include <stdio.h>
#include <stdlib.h>
int main()

char fileName[10];
char name[9];
char space;
int grade=0;
scanf("%s",fileName);
FILE *fp;
if((fp=fopen(fileName,"r"))==NULL)

printf("打开文件失败\n");
exit(1);

fscanf(fp,"%s",name);
fseek(fp,1,1);
fread(&grade,4,1,fp);
fscanf(fp,"%c",&space);
while(!feof(fp))

printf("%s,%d\n",name,grade);
fscanf(fp,"%s",name);
fseek(fp,1,1);
fread(&grade,4,1,fp);
fscanf(fp,"%c",&space);

fclose(fp);
return 0;

 

以上是关于文件的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )

背水一战 Windows 10 (85) - 文件系统: 获取文件夹和文件, 分组文件夹, 排序过滤文件夹和文件, 搜索文件

Unity3D资源文件 ① ( Unity 中常用的文件类型 | Unity 文件操作 | 文件系统中查看文件 | 添加文件 | 删除文件 | 导入文件 | 复制文件 | 缩略图显示 )

通俗易懂理解文件系统

bat删除文件夹下,特定名以外的文件和文件夹

Excel怎样批量提取文件夹和子文件夹所有文件?