文件(三)


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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM