天天看點

重學C語言 基本的格式化輸入輸出

原文出處:http://www.demosir.com/basic-fio-method.html

明天要騎自行車上班,大約30公裡的樣子,一天來回60公裡,一周5天300公裡,一個月大概20天1200公裡,計劃騎6個月到11月份,7200公裡。這個距離是從北京到拉薩的一個來回。到時候不知道車子和我會變成神馬模樣。生命不息,折騰不止!還有就是車子别再丢了,詛咒所有偷車子的人,生男孩渾身長滿長短不齊的小JJ,生女孩渾身長滿大小不等的MM。

基本的格式化輸入輸出

scanf和printf,在第一次學C語言的時候,這兩個函數是最讓我激動的,因為終于可以讓自己寫的程式與人互動了。

  • printf函數是必須要服從于格式串的輸出。
int i =5;
float x=3.14;
/*很多頁代碼之後,人暈手滑,鍵盤亂抖打出如下代碼*/
printf("%f,%d",i,x);
           

這樣的代碼是合法的,但是卻在輸出的時候,将整形與浮點型變量的順序弄錯了,那最終列印出來的結果也就是沒有意義的。

  • 如何避免這種錯誤呢?

個人的解決方法是把變量改名為有實際意義的名稱,比如上面的i可以改成student_count,x可以改為pi,這樣在寫出對應的printf之後,哪怕不知道聲明是什麼樣子的,一般情況下也不會搞錯,這就是程式設計規範起到的作用。

scanf是根據使用者特定的輸入格式讀取輸入,簡單卻危險,這個函數本質上一個模式比對函數(就像告訴計算機:去吃掉兩個杯子之間的蘋果,如果有人在兩個杯子之間放了條蟲子,計算機依然會遵從輸入的吃蘋果模式,把那個蟲子吃進去),是以在很多場合下,這種不太負責任的輸入方式是不允許的。

接着一個經典小例子,求兩個分數的和:

#include 

int main(void)
{
	int num1,denom1,num2,denom2,result_num,result_denom;
	printf("Enter first fraction: ");
	scanf("%d/%d",&num1,&denom1);

	printf("Enter second fraction: ");
	scanf("%d/%d",&num2,&denom2);

	result_num = num1*denom2 + num2*denom1;
	result_denom = denom1*denom2;
	printf("The sum is %d/%d/n",result_num,result_denom);

	return 0;
}
           

運作的結果是一個沒有化簡的結果:

2/7

3/4

Enter first fraction: Enter second fraction: The sum is 29/28

從這個例子裡面可以體會一下,什麼叫做格式化輸入輸出。

還有很多printf與scanf相關的内容,都在書上,比如%i與%d的差別,如何列印出%,scanf如何處理緩沖區等等。

下載下傳英文原版 請以留言方式留下您的郵箱

中文版購買連結:C語言程式設計:現代方法(第2版)

繼續閱讀