91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計編寫一個應用系統

發布時間:2020-07-01 09:21:18 來源:網絡 閱讀:274 作者:BGD150206105 欄目:網絡安全

一、 C語言文件的操作

1、 文件操作的基本方法:

C語言將計算機的輸入輸出設備都看作是文件。例如,鍵盤文件、屏幕文件等.

向屏幕輸出一個信息,例如“Hello”是

#include.h>

int main()

{

printf("Hello\\n");

}

從鍵盤接收一個字符串然后顯示是

#include.h>

int main()

{

   char a[10];

   scanf("%s",&a);

   printf("%s \\n",a);

}

那么,如果寫一個字符串到一個文件中,是什么方式呢?顯示到屏幕上是默認的輸出文件,如果是硬盤中的一個文件,首先要打開一個文件,然后才能往里寫,那么就要告訴程序這個文件在什么地方,按照什么樣的方式打開(讀、寫、讀和寫、添加、覆蓋等),然后打開后要給這個打開的文件一個符號(指針變量),表示后續的讀和寫都是針對這個文件的,而不是到屏幕的,這個指針變量以后就代表了文件自身了。

定義一個代表文件的符號(指針變量)這樣的形式

FILE *fp;

其中FILE是固定的寫法,后面的是指針變量名,可以隨意起。

這個時候fp還是一個空的指針變量,什么也沒有代表,類似一個倉庫里的貨架的標簽,什么也沒有寫。

然后讓這個指針變量指向一個文件,就是打開一個文件,然后讓這個指針變量指向這個打開的文件,后續對這個指針變量的操作就都是對這個文件的操作了。

打開文件的語句是

fopen(文件位置,打開模式);

文件位置好理解,就是文件所在的位置,例如c://test.txt

打開模式有幾種,

r(read): 讀

w(write): 寫

a(append): 追加

t(text): 文本文件,可省略不寫

b(banary): 二進制文件

+: 讀和寫

一般是rt+,也可以寫成r+,和w+,就是讀和寫,能保留原來的內容。

所以打開C盤下my目錄中的文件c:\\my\\test.txt的語句是

 

fp=fopen("c://my/test.txt","r+");

注意文件夾符號同上面的不同。

這個時候如果打開的文件出問題的話,往一個空指針里面寫東西是比較危險的,很容易把系統弄崩潰了。所以在后續的讀寫操作前,最好測試一下,打開文件后這個文件指針fp是否還是空的,如果是空的話,就不能往下執行了。所以語句變成了這樣

if((fp=fopen(" c://my/test.txt ","r+")) == NULL)  

{

    printf("文件沒有正確打開,不能往下執行了. \\n");     

    exit(1);    

}

完整的程序成了這樣

#include.h>

int main()

{

   FILE *fp;

   if((fp=fopen("c://my/test.txt","r+"))==NULL)  

   {

      printf("文件沒有正確打開,不能往下執行了. \\n");

  return(1);

   }

}

你會看到,程序報錯,因為沒有my這個目錄,所以你要在C盤下先建立一個my目錄,然后建立一個test.txt文件。或者你打開方式選擇寫和讀,如果沒有目錄或者文件的話,程序會自動幫你建一個文件。就是這樣

if((fp=fopen("c://my/test.txt","w+"))==NULL)  

有時間自己可以百度一下C語言打開文件的類型,功能非常豐富。

然后就可以用前面的輸入和輸出語句,向文件中寫內容了,同咱們上學期學的是一致的,就是在printf和scanf前面加f,成為fprint和fscanf,表示向文件輸出和從文件輸入,不是向屏幕輸出和從鍵盤輸入。

下面的程序實現了從鍵盤輸入一個字符,然后寫到文件中。

#include.h>

int main()

{

   char a[20];

   char b[20];

   printf("請輸入一個字符串(小于20個字符),寫到c://my/test.txt中 \\n"); 

   scanf("%s",&a);

   

   FILE *fp;

   if((fp=fopen("c://my/test.txt","w+"))==NULL)  

   {

      printf("文件沒有正確打開,不能往下執行了. \\n");

  return(1);

   }

   fprintf(fp,"%s",a); 

   fclose(fp);

}

 

執行完后,你打開文件看看,你寫的字符是否寫進去了?

然后,你在記事本中在文件中寫一個字符串,例如你的名字,然后用fscanf讀出來,而不用在屏幕上輸入了。

#include.h>

int main()

{

   char a[20];

   

   

   FILE *fp;

   if((fp=fopen("c://my/test.txt","r+"))==NULL)  

   {

      printf("文件沒有正確打開,不能往下執行了. \\n");

  return(1);

   }

   fscanf(fp,"%s",&a); 

   printf("%s \\n",a);

   fclose(fp);

}

讀取文件的時候有個指針,保證按照順序依次往下讀,如果讀到頭了想從頭再來,類似看書一頁頁讀完了想到頭上重新操作,用函數rewind(fp)就可以了,如果想定位到某個位置,類似將書翻到某一頁,用fseek(fp,偏移量,基準),就是在基準(0代表文件頭,1代表當前位置,2代表文件尾)的基礎上便宜多少。

這就是基本的文件的讀寫語句。有了文件的讀寫后,才能進行管理系統的開發,因為你的很多信息要存放到文件中才行,否則在程序中,關機后數據就沒有了。

 

 

2、 能存儲多個信息的結構體和結構體變量

上學期學過,一個變量可以保存一個數據,例如

int a; double b; char c[20];

則a可以保存一個整數,b可以保存一個實數,c可以保存一串字符(字符串)。

但是如果一個系統中,例如學生信息管理系統中,需要同時保存一個學生的姓名,性別,年齡等信息,那么設置變量保存很多同學的這些信息就有點不太方便。類似一個登記本,每一頁只能寫名字,如果你要登記其他的信息,又要添加一個登記本,只能寫性別,如果登記年齡,又要添加一個登記本,只能寫年齡,.,多么的不方便,還容易混亂。解決的方法你一定想,多么簡單,一個登記本一頁中,同時寫姓名,性別,年齡不就行了嗎?C語言也是這樣,如果定義一種形式,一個變量同時記錄很多的信息,這樣在管理系統中,就方便很多了。這就是結構體。

結構體首先要定義,因為每個程序用到的組合在一起的信息不一樣,例如學生信息管理系統中,可能要將學號、姓名、性別、年齡、班級組合到一起,所以 第一行用struct告訴程序,下面是一個結構體,后面的stu是這個結構體的類型,類似整數用int表示,這個stu是你自己起的名字。

typedef stu  

{   int num;/*學號*/

    char name[20];/*姓名*/

char sex[5];/*性別*/

int age;/*年齡*/

char sclass[20];/*班級*/

};

這個結構體中,包括了5個變量。

這樣就有了一個新的變量類型,stu,這個變量類型是你自己定義的,同int,float是一樣的。

如果定義一個整數變量a,你一定知道是

int a;

a=3;

那個定義一個你自己定義的stu類型的變量a,這樣的形式,其中前面的struct告訴編譯程序,這個stu是你自己定義的結構體類型,后面的a就是一個結構體變量了。

struct stu a;

但是賦值的時候,因為這個時候的a,代表了很多的信息,有num,name,sex,class,就是a中實際上是包括了很多的變量,那么怎么賦值呢?用點運算符.,就是a.num,a.name,a.sex,a.class,這個道理類似剛才提到的記錄本每一頁記錄很多信息,這個a就代表1頁紙,里面有很多信息欄,這一頁紙的學號欄就用a.num表示,其他類似。如果有很多學生怎么辦呢?那就多設置幾個stu類型的變量,例如a1,a2,a3就行放很多同學的信息,你一定想到,這不是一個好辦法,因為信息都一樣,有就是登記本每一頁的格式都是一樣的,這種方式適合用數組, 

stu a[80];

這樣,分別用a[0],a[1],a[2],就可以存放至多到80個同學的信息了。

所以程序可以這樣

#include.h>

 

struct stu  

{   int num; /*學號*/

    char name[20];/*姓名*/

char sex[5];/*性別*/

int age;/*年齡*/

char sclass[20];/*班級*/

};

int main()

{

struct stu a;

printf("依次輸入學號,姓名,性別,年齡,班級,用回車分割,系統會顯示輸入的內容 \\n"); 

scanf("%d%s%s%d%s",&a.num,&a.name,&a.sex,&a.age,&a.sclass);

printf("以下是剛才輸入的信息保存到stu類型變量a中后的結果 \\n");

printf("%d%s%s%d%s",&a.num,&a.name,&a.sex,&a.age,&a.sclass);

}

 

現在你已經很有進步了,可以用一個變量存儲很多信息了。

 



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张家界市| 电白县| 周至县| 资阳市| 屏边| 仁布县| 陈巴尔虎旗| 城口县| 湘阴县| 社旗县| 阿图什市| 鹤庆县| 武威市| 达孜县| 金寨县| 丹寨县| 达拉特旗| 甘肃省| 青海省| 汾阳市| 广饶县| 都兰县| 汉阴县| 故城县| 福建省| 内乡县| 济南市| 象州县| 新安县| 贵港市| 襄城县| 辰溪县| 上栗县| 翁牛特旗| 静海县| 略阳县| 丹江口市| 禹城市| 库尔勒市| 临泽县| 富阳市|