當前位置:首頁 » 編程語言 » c語言自變數類型後怎麼處理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言自變數類型後怎麼處理

發布時間: 2022-09-05 09:59:55

『壹』 c語言,自動類型轉換怎麼做

C語言數據類型轉換自轉換強制轉換兩類 自轉換自轉換發同數據類型量混合運算由編譯系統自完自轉換遵循規則: 1.若參與運算量類型同則先轉換同類型進行運算 2.轉換按數據度增加向進行保證精度降低int型long型運算先int量轉long型再進行運算 3.所浮點運算都雙精度進行即使僅含float單精度量運算表達式要先轉換double型再作運算 4.char型short型參與運算必須先轉換int型 5.賦值運算賦值號兩邊量數據類型同 賦值號右邊量類型轉換左邊量類型 右邊量數據類型度左邊丟失部數據降低精度 丟失部按四捨五入向前舍入 強制類型轉換 強制類型轉換通類型轉換運算實現其般形式: (類型說明符) (表達式) 其功能表達式運算結強制轉換類型說明符所表示類型例: (float) a a轉換實型(int)(x+y) x+y結轉換整型使用 強制轉換應注意問題: 1.類型說明符表達式都必須加括弧(單變數加括弧)(int)(x+y)寫(int)x+y則x轉換int型再與y相加 2.論強制轉換或自轉換都本運算需要變數數據度進行臨性轉換改變數據說明該變數定義類型

『貳』 什麼是c語言裡面的自變數

C語言裡面的自變數?沒聽說過這種說法啊。。除非是用++或者--之類的運算符,實現變數自我增加或減少,其它沒聽過有「自變數」這種說法啊。

比如有語言:
int i=0;
i++;

就是說,給整型變數i賦初值為0,然後使i的值每次自已加1。是不是就是這個。

『叄』 c語言中定義變數為一個整型但是輸入的是一個實型,系統會怎麼處理

自動截斷小數部分,轉換為整型。如輸入2.5,被轉換為2。

『肆』 C語言數據類型如何轉換

C語言算術表達式的計算,在計算過程中,每一步計算所得結果的數據類型由參與運算的運算對象決定,相同數據類型的兩個對象運算,結果數據類型不變,不同數據類型的運算對象進行運算,結果的數據類型由高精度的運算對象決定。精度的高低:double>float>int
需要注意的是,數據類型的轉換是在計算過程中逐步進行的,整個表達式結果的數據類型一定與表達式中出現的精度最高的數據相同,但是具體得到數據值是逐步得到的,例如:int
x=1,y=3;
double
k=1573.267;
x
/
y
*
k
這個表達式計算結果的數據類型是double,
計算結果的答案是
0.0
因為在第一步
x/y
的計算中
結果是一個整型數據
0
第二步計算
0
*
1573.267
結果是一個double類型的數據,但數值是0.0
也就是說,算術表達式計算結果的數據類型與運算的優先順序沒有關系,一定具有表達式中精度最高的數據類型,但是具體得到數據結果數值,與優先順序可就有關系啦。

『伍』 c語言輸入自變數,沒有結果輸出是為啥

格式錯誤:
1、x、y是double型,scanf語句讀取變數的格式應該是%lf,而不是%f
2、輸出語句並沒有規定變數格式,而且&x、&y是地址,而不是值。
應改為:
printf("
自變數
x為:%f\t",x);
printf("自變數y為:%f",y);
邏輯錯誤:
||、&&亂用,不同語句x的范圍相互交叉。
這個程序基本
全錯了

『陸』 C語言關於自變數的問題

#include<stdio.h>

intmain(void)
{
charc;
inta,b,i,sum;
if(scanf("%c%d%d",&c,&a,&b)==3)
{
switch(c)
{
case'e':
for(i=a,sum=0;i<=b;++i)
if(i%2==0)
sum+=i;
printf("%d到%d之間偶數和為%d ",a,b,sum);
break;
case'o':
for(i=a,sum=0;i<=b;++i)
if(i%2!=0)
sum+=i;
printf("%d到%d之間奇數和為%d ",a,b,sum);
break;
default:printf("錯誤的自變數 ");break;
}
}
else
{
printf("沒有自變數 ");
}
return0;
}

『柒』 為什麼在C語言中任何變數定義後,其數據類型不能改變,只能改變其值

舉個例子:int i; 這里 i是整形變數,這個過程中,內部已經給它分配了一個整形空間用來存儲整形變數,也就是說 這個空間存儲不了非整形變數。假如你硬要給它賦值非整形變數如i=1.1,c語言會直接取整數部分,小數部分舍棄,結果還是整形。
如果你硬要在使用過程中改變其數據類型也不是沒有辦法。那就是對其強制類型轉換,例如將整形轉位浮點行 j= (float)i 這里i就相當於浮點型,但是只限於這個式子。在這個式子外,其還是整形。

『捌』 關於c語言中的類型轉換,謝謝了啊!!!

main() /*No.1主函數*/
{
printf("Welcome to study C program.\n");
printf("This is Lesson One.\n");
}
程序寫好後,按「F9」,然後按"Alt-F-O",就進入DOS提示符下
去執行它。

Welcome to study C program.
This is Lesson One.

怎麼樣?你自己的程序也變成了*.exe型的可執行文件了。按
「EXIT」可以返回到系統。
上例中「main()」是程序的主函數。C 語言程序由一系列函數組
成,而且每個程序必須有且只有一個主函數,即「main()」。在第一
行末還有/* */所夾的內容,它在程序編譯時不參與編譯,只說明程
序的作用,即起注釋作用。所以在你抄本教程的例子時可不抄這一部
分內容。
每個函數必須由「{ }」括起來,每句程序必須用「;」結束。
第3行第4行中printf是C語言用來在屏幕上輸出信息的一個重要
函數,最簡單的格式是
printf("顯示的內容");
字元串後面的「\n」不會顯示在屏幕上,它的意思是「回車換行」
接下來,你把第3行後面的「\n」去掉,再按「F9」後去執行,
你就會發現兩行內容都印在了一行。

Welcome to study C program.This is Lesson One.

如果在「\n」後加上「\a」,即每顯示一行出現一次響鈴。
如下表,是「\」後面字元的特殊含義。
\r
回車不換行(到行首)

\t
橫向跳到下一輸出位

\b
向左退格

\\
輸出字元"\"

好。下面把程序中「printf("This is Lesson One.\n");」
換成「printf("\tThis is Lesson One.\n");」,執行一下程序。

Welcome to study C program.
This is Lesson One.

下面再換成「printf("This is \b\bLesson One.\n");」再執行
一下。

Welcome to study C program.
This iLesson One.

程序中的「s 」並不是沒有顯示,而是顯示後,又被「Le」給蓋
上了。
要想在屏幕上輸出一個「C:\>」則要寫上「printf("C:\\>");」
好了,第一節就要此為止。你趕快復習一個。你知道今天所學的
知識了嗎?(只要學會了這些就別再多學了,貪多吃不爛。)
1.printf("顯示信息") 最簡單的輸出格式
2.「{ }」 用來括起函數
「;」 每句程序的結束標志
3.「\t」「\n」「\b」「\a」是什麼意思?
4.主程序的標志是什麼?
5./* */ 是用來注釋程序
不過先別關機,如果你用的是UCDOS或是成然漢字,你可以把顯
示的信息用中文代替。如:printf("我一定要把C語言學會!\n");

您的當前位置是:首頁>>電腦知識>>文本方式下的顯示

--------------------------------------------------------------------------------

文本方式下的顯示

C語言中,圖形函數大致可分為兩類:字元模式函數和圖形模式函數。本節我們練習使用字元模式函數。
使用字元模式函數應該在程序中聯入conio.h頭部文件。
下面是一些函數的作用
1) void clreol(); 從游標處刪除到本行末
2) void delline(); 清除本行內容,下面內容上提一行
delline();函數實際上還起到了向上卷屏的作用。
3) void insline(); 在游標所在行插入一空行,原來該行及以
下各行皆向下移一行
4) int wherex(); 返回當前游標的x(行)坐標
5) int wherey(); 返回當前游標的y(列)坐標
6) void highvideo(); 字元輸出用高亮度字元
7) void lowvideo(); 字元輸出用低亮度字元
8) void normvideo(); 字元輸出用普通亮度字元
在以上的各函數中皆不帶參數,當然也可以寫成括弧中有void的形式:
void wherex(void); 還可以寫成 wherex();
清屏、清行、向後刪行、插行的操作真有些CCED、WPS等編輯軟體的風格,就是在你平時的屏幕設計中也用少不了。返回坐標的函數則給你的設計提供每一個環節的游標坐標值。有利於你前後響應。字
符亮度的改變則會讓你的字元顯示出層次感,怎麼樣,趕快試試吧:
/* No32.c*/
# include "stdio.h"
# include "conio.h"
main()
{ clrscr();
gotoxy(10,1);
cprintf("甜密密,");
highvideo(); /*高亮度顯示*/
cprintf("\r\n 你笑得甜密密,");
lowvideo(); /*低亮度顯示*/
cprintf("\r\n 好象花兒開在春風里,");
normvideo(); /*普通亮度顯示*/
gotoxy(10,4); cprintf("開在春風里");
cprintf("\r\n 在哪裡,在哪裡見過你?");
printf("\r\n 你的笑容這樣熟悉。");
gotoxy(10,20);printf("任意鍵刪去游標後的內容");
gotoxy(18,3); getch();
gotoxy(18,3);
clreol(); /*刪去游標後字元*/
gotoxy(10,20);printf("任意鍵刪去本行的內容 ");
gotoxy(18,3); getch();
delline(); /*刪去本行*/
gotoxy(10,20);printf("任意鍵在本行插一空行 ");
gotoxy(18,3); getch();
insline(); /*插入一空行*/
gotoxy(1,7);
}
應該注意的是,要發揮本節所講的函數的作用,在顯示時不能使printf函數,應使用cprintf函數。它的使用方法和printf的完全一樣,只不過後面的cprintf能發揮亮度設置和顏色設置的作用。前者
printf函數只有一種顏色和單一的亮度。
在cprintf函數中,「\n」的作用不再是既回到行首又換行,它只起一個換行的作用,所以要把內容在行首顯示必須再加一個「\r」
上面的程序不是一真正對大家有用的程序,只是用來說明一個剛剛學到的幾個函數的作用。在conio.h中還有一些字元型函數,它們都是帶參數的。
9) void textcolor(顏色); 定義顯示字元顏色
10) void textbackground(顏色); 定義背景顏色
下面是顏色數字和顏色對照表
BLACK 0 黑 DARKGRAY 8 深灰
BLUE 1 蘭 LIGHTBLUE 9 淡蘭
GREEN 2 綠 LIGHTGREEN 10 淡綠
CYAN 3 青 LIGHTCYAN 11 淡青
RED 4 紅 LIGHTRED 12 淡紅
MAGENTA 5 洋紅 LIGHTMAGENTA 13 淡洋紅
BROWN 6 棕 YELLOW 14 黃
LIGHTGRAY 7 淡灰 WHILT 15 白
背景顏色值只能是0-7共8個數字或其對應的英文大寫單詞。而前景(即字元)的顏色可以是0-15共16種顏色或其對應的英文大寫單詞。當你定義的前景和背景相同時,屏幕上看不到輸出的內容。
textcolor(4); 和 textcolor(RED); 效果是相同的。
設置屏幕顏色還可以使用
11) void textattr(前景顏色+(背景顏色));
但這里的背景顏色要有「<<4」。如白底紅字,就是:
textattr(RED+(WHITE<<4));
12) int gettext(左上角x,左上角y,右下角x,右下角y,內存指針);
把定義的長方形區域內的內容存在內存中
13) int puttext(左上角x,左上角y,右下角x,右下角y,內存指針);
把內存中存好的內容顯示在新定義的矩形塊內
這里的內存指針也可用字元形數組來代替。需要注意的是內存大小應該是所存內容的「行數*列數*2」。比如把第3行第5列到第6行第75列的數據存到內存中,可以用下面的片段:
char buffer[4*70*2];
gettext(5,3,75,6,buffer);
然後你就可以用puttext函數來顯示它了。
14) void movetext(左上角x,左上角y,右下角x,右下角y,
新左上角x,新左上角y);
把矩形塊移到新左上角(x,y)決定的地方
15) void window(左上角x,左上角y,右下角x,右下角y);
定義一個窗口,大小就是上面參數決定的長方形
利用這一函數,你可以在屏幕上任何一個地方開辟一個窗口,並在上面顯示需要的內容。這絲毫不影響屏幕其它地方的內容。當你定義了窗口後,你只能操作該窗口,gotoxy(),wherex(),wherey(),
clrscr()等等函數所表示的都是你定義窗口中的情況。實際上這就為我們的操作帶來了方便,你想操作哪兒,就定義哪兒,想回到平時狀態的屏幕,就定義一個最大的窗口,window(1,1,80,25);就復原了。
No.33號例子是利用puttext和gettext函數以及顏色定義來模仿CCED和WPS的菜單顯示。但這個小程序沒有可移動的光條,也沒有菜單中內容的相應執行程序,只是演示一下屏幕的保存和釋放而已。
/* No33.c */
#include "conio.h"
#include "stdio.h"
main()
{ int i=1,j,ch;
char buffer[6*50*2]; /*開辟內存空間的大小*/
clrscr();
textcolor(0); /*定義字元顏色*/
textbackground(7); /*定義背景顏色*/
gotoxy(1,1);
cprintf(" 功能1 功能2 功能3 ");
textbackground(0);
textcolor(14);
gotoxy(1,2);
cprintf("What's your name? 你叫什麼名字");
cprintf("\n\rMy name is Wang Dong. 我叫王東.");
cprintf("\n\rHow old are are you? 你多大了 . ");
cprintf("\n\rI'm thirty-four. 我四十四了");
cprintf("\n\r\n\rThis is Lesson One. 這是第一課");
while(1)
{ j=i;
textcolor(0);
textbackground(7);
if(i==1)
{ gettext(1,2,13,5,buffer);
gotoxy(2,2); cprintf("│第一課│");
gotoxy(2,3); cprintf("│第二課│");
gotoxy(2,4); cprintf("│第三課│");
gotoxy(2,5); cprintf("└———┘");
}
if(i==2)
{ gettext(13,2,25,5,buffer);
gotoxy(14,2); cprintf("│菜單一│");
gotoxy(14,3); cprintf("│菜單二│");
gotoxy(14,4); cprintf("│菜單三│");
gotoxy(14,5); cprintf("└———┘");
}
if(i==3)
{ gettext(25,2,37,5,buffer);
gotoxy(26,2); cprintf("│說明A │");
gotoxy(26,3); cprintf("│說明B │");
gotoxy(26,4); cprintf("│說明C │");
gotoxy(26,5); cprintf("└———┘");
}
textcolor(14);
gotoxy(10,20);printf("→向右移動 ←向左移動 Esc 退出");
ch=getch();
if((ch==75)&&(i==1)) /*菜單個數的判斷*/
{ i=3; ch=0;}
if((ch==77)&&(i==3)) /*ASCII碼 77是右箭頭*/
{ i=1; ch=0;}
if((ch==75)&&(i>1)) /*ASCII碼 75是左箭頭*/
i--;
if((ch==77)&&(i<3))
i++;
if(ch==27)
break;
puttext(j*12-11,2,j*12+1,5,buffer);
}
}

您的當前位置是:首頁>>電腦知識>>基本輸入輸出

--------------------------------------------------------------------------------

基本輸入輸出

基本輸入輸出函數
下面要進行的工作是編個程序,你輸入什麼,它就顯示什麼。程序如No.2所示。
main() /* No.2 */
{
char ch[12]; /*定義一個字元串*/
int i; /*定義一個整(數)型變數*/
printf("請輸入一個字元串:"); /*顯示提示信息*/
scanf("%s",ch); /*用輸入函數輸入字元串*/
printf("請輸入一個整數:");
scanf("%d",&i); /*輸入一個整數*/
printf("輸入的字元串是:%s 輸入的數字是%d",ch,i);
}
如果你輸入的字元串是「中華人民共和國」,數字是2000,那麼編譯成EXE文件後執行

請輸入一個字元串:中華人民共和國
請輸入一個整數:2000
輸入的字元串是:中華人民共和國 輸入的數字是2000

怎麼樣?比No.1程序要好一些吧,想顯示什麼就顯示什麼。你還
可以顯示代數式的結果:如把第8行最末尾的數據「i」換成「i*10」
printf("輸入的字元串是:%s 輸入的數字是%d",ch,i*10);
運行程序時,輸出如下:

請輸入一個字元串:中華人民共和國
請輸入一個整數:2000
輸入的字元串是:中華人民共和國 輸入的數字是20000

本程序注釋較多,這樣就增加了程序的可讀性。通過此程序我們應學習哪些知識呢?
第3行和第4行是對數據進行定義,任何一個變數在C 語言中必須先定義才能使用。
第5行和第7行的scanf()是輸入函數,用來輸入用戶信息。其格式是:
scanf("數據格式說明",數據列表);
之所以是「數據列表」,就是說這里的數據,既可以是一個,也可以是多個,既可以是相同格式的數據,也可以是不同格式的數據。
scanf("%s%d",ch,&i);
它說明的含義是讓用戶輸入一個字元串再輸入一個整數,中間用空格分開。
在格式說明中「%s」「%d」是什麼意思呢?「%s」說明輸入的是 字元串,「%d」說明輸入的是整數
注意:C語言中,整數叫「整型數據」。其它格式如下表所示 %d
十進制整數

%o
八進制整數

%x
十六進制整數

%f
小數或指數形式數據

%c
輸入單個字元

上表格式說明也同樣適用於printf()函數。如第8行就是一例。需要注意的是,在輸入數字或單個字元時,數據列表必須用取地址符號,即「&」,而在輸出時則不用。
下面再看一看No.3號程序
main() /*No.3*/
{ int a=5,b=10,c,d;
c=200;
d=a*(b+c);
printf("a*(b+c)=%d",d);
}
在這個小程序里,我們計算了一個小代數式的值,然後輸出了它的值。需要說明的是,第二行中,在定義變數時可以賦初值。也可以象第三行那樣,在定義後再賦初值。
在C語言中,除了整數外,還有無符號整數、實數(浮點數)、長整數、雙清度實數。
在C語言中,整數並不是可以無限大,它的大小是有一定限度的,超過了這個限制,程序就會出錯。大小規定如下表所示:

數據類型
存儲位(bit)
數值范圍

整型 int
16
-32768—32767

無符號整數unsigned
16
0—65535

實數 float
32
10E38—10E38

長整型 long int
32
-2147483648—2147483647

雙精度實數 double
64
10E-308—10E308

我們下面練習一個No.4號程序
main() /* No.4 */
{ int a=1000,b=2500,i1;
long c=1000,b=2500,i2;
i1=a*b;
i2=c*d;
printf("整型數據1000*2500的積是%d\n",i1);
printf("長整型數據1000*2500的積是%ld\n",i2);
}
執行程序,屏幕輸出:

整型數據1000*2500的積是9632
長整型數據1000*2500的積是2500000

上例中,因為整型數據超出了32767的限制,所以出錯。如果計
算結果超過32767,在設計時就應該定義成長整型數據。
今天學習的內容太多了,下面的內容你會多少?
1.輸入函數scanf()和輸出函數printf()的格式是怎樣的?
2.scanf()在輸入字元串時和輸入數字時有什麼區別?
3.輸入輸出時「%s %d %o %x %c %f」表示什麼意思?
4.你能大致了角數字數據類型和最大值最小值嗎?
頭關機以前,你能否再看一眼No.2、No.3、No.4三個程序

您的當前位置是:首頁>>電腦知識>>定位輸出

--------------------------------------------------------------------------------

定位輸出

在系統程序中,顯示內容是方便的,任何一個位置都可以顯示,
那麼,我們怎樣隨意顯示輸出內容呢?在C語言中,游標定位用:
gotoxy(列坐標,行坐標);
下面的No.5例子就是它的具體應用:
/* No5.c*/
#include "stdio.h" /*連入頭部文件stdio.h*/
main()
{
char ch; int i;
gotoxy(10,4); /*把游標定位在(10,4)坐標處*/
printf("輸入一個字元,它便以大寫的形式輸出 ");
ch=getchar(); /*用getchar()函數輸入一個字元*/
if ((ch>='a') && (ch<='z'))
ch=ch-32;
gotoxy(10,7);
printf("輸入一個整數,便把它大1和小1的數輸出 ");
scanf("%d",&i);
gotoxy(15,13); printf("你輸入的字元大寫為%c",ch);
gotoxy(15,14);
printf("你輸入的%d兩側的數分別為%d,%d",i,i-1,i+1);
}
第1行是在編譯時把stdio.h連入程序文件。具體作用見No.6解釋
在上程序的第4行中,兩類數據定義佔了一行,這是允許的。C語
言程序寫法是很隨便的,它可以一行一句,也可以一行寫多句,上例
的第13行也是這樣書寫的。不過一般情況下我們不這樣寫。為了程序
在檢查和閱讀時方便,我們一般一行寫一句,而且程序中一個層次的
內容和另一個層次的內容使用縮格排版格式。如上程序的main()函數
上例中的if()語句等。以後程序中層次越多,越應該形成這樣的好習
慣。
如果你輸入的字元是m,數字是11,則屏幕輸出如下:

輸入一個字元,它便以大寫的形式輸入 m
輸入一個整數,便把它大1和小1的數輸出 11

你輸入的字元大寫為M
你輸入的11兩側的數分別為10,12

在No.5程序中出現了一個新的函數,它是字元輸入函數,它的作用是只輸入一個字元。
除了它,還有兩個字元輸入函數,如右表

getchar()
字元顯示,回車鍵結束

getche()
字元顯示,不必按回車

getch()
字元不顯示,不必按回車

上述三個字元輸入函數使用時沒有參數,即()中沒有內容。
在C語言中,字元也有大小,它按ASCII表中的值排列大小。可以
進行字元間及字元與數字間的運算。如上例的「ch=ch-32;」。比較
字元大小時,可用字元直接比較,如上例的第7行那樣;也可以用數
值進行比較,上第7行可改為:
if ((ch>=97) && (ch<=122))
上一行是程序中的條件語句,它的簡單格式是
if(條件表達式)
{ 內容1;}
else
{ 內容2;}
如果條件表達式成立,執行內容1,不成立則執行內容2。else語
句可有可無。當執行內容只有一行時,可以省略內容兩側的「{ }」
上述程序的執行內容就沒有「{ }」
在上例的「if ((ch>='a') &&(ch<='z'))」中「&&」是邏輯運
算符,邏輯運算符如下表所示

&&
邏輯與

||
邏輯或

!
邏輯非

任何時候,學習都是為了應用。下面我們編寫一個電子表程序:
/* No6.c */
# include "stdio.h" /*連入頭部文件stdio.h*/
# include "dos.h" /*連入頭部文件dos.h*/
main()
{ struct time t; /*定義時間變數 t */
struct date d; /*定義日期變數 d */
clrscr(); /*清屏*/
getdate(&d); /*獲取當前日期*/
gotoxy(33,4);
printf("%d.%d.%d",d.da_year,d.da_mon,d.da_day);
while(!kbhit()) /*如果沒有按鍵,則執行下面內容*/
{ gotoxy(34,6);
gettime(&t); /*獲取當前時間*/
printf("%d:%d:%d",t.ti_hour,t.ti_min,t.ti_sec);
}
}
C語言程序特別靈活,它可以把別的程序或文件中的內容,連入
到你的程序中,在C語言中已經有許多我們用到的內容放在了頭部文
件中,本例中就是利用了"dos.h"頭部文件中的時間和日期的定義。
這種連入,既可以是C語言內部的頭部文件(*.h),也可以是你自已
寫的文件。你自己被連入的文件既可以是「*.h」文件,也可以是
「*.c」文件。文件連入寫法有兩種:
#include "dos.h" 用這種寫法 dos.h 文件放在當前目錄中
#include <dos.h> 用這種寫法 dos.h 文件放在TC\INCLUDE目
錄中。
第6行中「clrscr();」是清屏函數,它不帶參數,作用:清屏
第11行的「kbhit()」函數是用來檢測用戶是否按了鍵,但它不
能測試出你按的什麼鍵。要知道按的是什麼,必須和輸入函數配合使
用。
第11行有「while(!kbhit())」是個循環語句,它的意思是:只
要沒有按鍵,程序便執行{...}所括的內容。
本節內容提綱如下:
1.游標定位:gotoxy(列從標,行坐標);
2.getchar()、getcha()、getch()三個字元輸入函數輸入時情況
是不同的,一個是游標是否回顯,一個是是否用回車結束
3.if(...) 如果...便執行{...}中的內容
4. &&邏輯與,||邏輯或,!邏輯非
5.#include "..." 把...文件和主程序連在一起編譯
6.kbhit()測試按鍵是否按

您的當前位置是:首頁>>電腦知識>>使用文件

--------------------------------------------------------------------------------

使用文件

到此為止,我們仍停留在屏上,一些需要的東西還不能做為資料保存。要想把你看到的保留下來,就得把資料存儲在磁碟文件中,本節我們用兩個例子來學習使用文件。
No.7程序是模仿DOS命令中的程序。
/* No7.c */
#include "stdio.h" /*連入stdio.h*/
main(int argc,char *argv[]) /*帶參數的程序(帶命令行參數)*/
{
char ch;
FILE *in,*out; /*定義文件指針*/
if(argc!=3) /*如果命令行數目不等於3*/
{ printf("格式應該是: No7 源文件名 目標文件名\n");
exit(1); } /*退出程序*/
if((in=fopen(argv[1],"r"))==NULL) /*打開源文件*/
{ printf("文件不存在或磁碟沒准備好!\n");
exit(1); }
if((out=fopen(argv[2],"w"))==NULL)
{ printf("文件復制失敗!\n");
exit(1); }
while((ch=fgetc(in))!=EOF) /*如果讀出的數據不是結尾標志*/
fputc(ch,out); /*把讀出的數據寫到目標文件中*/
fclose(in); /*關閉文件*/
fclose(out);
printf(" 1 個文件復製成功 \n");
}
上述程序的主程序是帶參數的,argc表示命令行的元素個數,argv[],用來接收程序所帶的參數。這些參數的接收都是在執行程序時自動完成的。如用上常式序把名為「HEBEI」文件,復制到名為「BEIFEN」的文件,命令行應執行:
no7 hebei beifen
執行後,argc值為3,argv[1]成為「hebei」,argv[2]賦值為「beifen」。
上例中「exit(1);」表示退出程序的執行,返回到DOS提示符。
文件打開格式用
文件指針=fopen(文件名,"打開方式");
if((in=fopen(argv[1],"r"))==NULL) 意思是「如果文件打開失敗」,則... ...
打開方式中「r」是打開文件後,只能從文件中讀取信息。「w」是打開文件後,只能從文件中寫信息。下面是打開方式及功能列表

r
打開一個文本文件讀
rb
打開一個二進制文件讀

w
打開一個文本文件寫
wb
打開一個二進制文件寫

a
打開一個文本文件添加
ab
打開一個二進制文件添加

r+
打開一個文本文件讀寫
r+b
打開一個二進制文件讀寫

w+
生成一個文本文件讀寫
w+b
生成一個二進制文件讀寫

a+
打開或生成文本文件讀寫
a+b
打開或生成二進制文件讀寫

「fclose(文件指針);」用來關閉已打開的文件。 如上面的
fclose(in); fclose(out); 就是應用。
fgetc(文件指針); 從文件中讀取一個字元。
fputc(字元,文件指針); 把字元寫到文件中去。
EOF是文件結束標志。
下面我們編個簡易的文本文件閱讀器,它相當於DOS中的「type 文件名 | more」,也就是分頁顯示文本文件。
/*No8.c*/
#include "stdio.h"
main(int argc,char *argv[])
{
FILE *fp;
int i=1;
char ch;
if(argc<2) /*如果命令行參數少於兩個*/
{ printf("正確使用方法是: no8 文本文件名");
exit(1);} /*退出*/
if((fp=fopen(argv[1],"r"))==NULL) /*如果文件打開失敗*/
{ printf("%s 不存在",argv[1]);
exit(1);}
else
{ clrscr(); /*清屏*/
while((ch=fgetc(fp))!=EOF) /*讀取文件中的字元*/
{ printf("%c",ch); /*顯示讀出的字元*/
if(ch=='\n') /*如果讀出的字元是回車*/
i++;
if(i>=23) /*如果行數到24行*/
{ printf("Any key to continue......\n");
i=1;
getch(); /*輸入任一個字元*/
}
}
}
fclose(fp);
}
本例中沒有什麼更難理解的。需要提醒大家的是:在程序中你打開一個文件後,別忘了在結束程序之前,一定要把打開的文件關閉。
在上述程序中,使用了條件語句中的else語句。在使用else語句時,如果語句不

『玖』 c語言定義了自變數的類型之後,在輸入一個不是該類型的數據給它 ,那麼系統會怎麼處理呢

如果可以兼容 那麼會兼容處理
比如 定義short類型,輸入一個int范圍的,比如1234566 會全部讀入,溢出部分捨去
如果不能兼容, 比如 定義int輸入,但出現了英文字母,
這時會返回錯誤,同時不對該數據賦值。