iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 3

30天學會C語言: Day 2-世界泥豪

今天要讓電腦說泥豪

printf()

stdio.h 中的函式,可以把括號中的引數顯示到螢幕上,printf() 的引數只能是字串

字串和字元

  • 字元(Character)
    在電腦中的文字符號被稱為字元,任何語言中的單個字母、符號、空格或單個數字都叫做字元,在程式碼中用英文的單引號''標示
    例如:'a', 'A', '0', ' ', '+', 'α', 'β', '早', '安', '@', '#', 'あ', '한', 'Л'
    不過C語言能完整支援的字元有限,所以之後只會討論英、數的文字和符號
  • 字串(String)
    代表的是不定長度(字數)的文字資料,也就是說一個字串可以由單個、多個字元組成,也可以不包含任何字元(稱為空字串),在程式碼中用英文的雙引號""標示
    例如: "Hello, World!", "0123", "string", "09/18", "This is a string.", "a", ""

後面的文章會對字串和字元有更詳細的介紹(挖坑+1),現在只要先知道透過 printf() 顯示的內容要用 "" 標註就可以了

單行文字

在視窗上顯示 Hello, World! 的字樣

#include<stdio.h>
#include<stdlib.h>
int main(){
	printf("Hello, World!");
	return 0;
}

執行結果:

因為 printf() 的引數只能是字串,如果要顯示純數字的內容,也必須用雙引號標示

#include<stdio.h>
#include<stdlib.h>
int main(){
	printf("20210915");
	return 0;
}

如果有多個 printf(),顯示的內容會接在上一個 printf() 的後面

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

int main(){
	printf("AAA");
	printf("BBB");
	return 0;
}

printf() 不會在結尾自動換行或是補上空格,所以同一行文字是由多個 printf() 組成時,字串和字串之間間隔的符號也要打在字串中

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

int main(){
	printf("AAA ");
	printf("BBB");
	return 0;
}

多行文字

因為 printf() 沒有換行的功能,所以如果要顯示多行文字,必須要在字串的結尾加上換行符號
C語言以及大部分程式語言的換行符號用 \n 表示

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

int main(){
	printf("First line.\n");
	printf("Second  line.");
	return 0;
}

也可以把兩行內容合併變成一個字串

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

int main(){
	printf("First line.\nSecond  line.");
	return 0;
}

如果要在兩行文字之間空一行

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

int main(){
	printf("First line.\n");
	printf("\n");
	printf("Second  line.");
	return 0;
}

也可以寫成

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

int main(){
	printf("First line.\n\n");
	printf("Second  line.");
	return 0;
}

或是

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

int main(){
	printf("First line.\n\nSecond  line.");
	return 0;
}

接下來要示範的是光速填坑

逃脫字元 \

反斜線 \ 在C和大多數語言中又叫做逃脫字元,代表 \ 後的下個字元要特別處理,所以當 \ 後面接上不同的文字或符號的時候可以表示不同的字元,我把它們分成兩類

語法中,符號已經有定義

如果某個符號在程式語言中已經有自己的定義,就需要用跳脫字元來表示,因為每個語言有用到的符號都不一樣,所以每個語言略有不同
C語言中有:

  • 單引號 ' 代表的是字元的開始和結束,所以單引號的字元要寫成 '\''(字串可以是 "'""\'")
  • 雙引號 " 代表的是字串的開始和結束,所以雙引號的字串要寫成 "\""(字元可以是 '"''\"')
  • 反斜線 \ 本身一定要搭配另一個符號才有意義,所以反斜線的字元是 '\\',字串是 "\\"

另外百分比 % 在字串中代表預留位置(挖坑+1),如果要顯示百分比符號要用 "%%"

當要顯示的內容中有以上的符號就需要用到跳脫字元

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

int main(){
	printf("We use double quotes to mark \"start\" and \"end\" of a \'string\'.");
	return 0;
}

鍵盤打不出來的符號

另外一種就是鍵盤打不出來的符號,前面用到的換行\n就是最常用的一種
另外還有:

  • \t: 自動對齊的空格
      #include<stdio.h>
      #include<stdlib.h>
    
      int main(){
      	printf("12\t123\n");
      	printf("123\t12\n");
      	return 0;
      }
    

    如果把 \t 換成鍵盤上的空白鍵
      #include<stdio.h>
      #include<stdlib.h>
    
      int main(){
      	printf("12 123\n");
      	printf("123 12\n");
      	return 0;
      }
    
  • \a: 鈴聲,執行的時候會撥放系統音效
  • \b: 倒退一格,如果 \b後面還有文字的話,\b前一格的文字會被吃掉
      #include<stdio.h>
      #include<stdlib.h>
    
      int main(){
      	printf("123\b456");
      	return 0;
      }
    
  • \r: 倒退到這行的開頭,如果後面還有文字的話原本開頭的文字會被吃掉
      #include<stdio.h>
      #include<stdlib.h>
    
      int main(){
      	printf("1234\r567");
      	return 0;
      }
    
  • \0 代表字串的結束,也就是下一個坑

補充

程式碼中的 ;

C還有一些程式語言中,同一個指令的結尾必須加上分號 ; 表示指令結束,有點像是文章中的句號
所以在前面的範例中,printf()return 0 的後方都要加上 ;

int main() 後面不需要加分號,你可以想成因為 int main() 這行是在定義 main() 這個函式,但 main() 的內容寫在之後的大括號中,所以 int main() 不能加括號因為定義還沒結束


挖坑清單:

  • main() 前面的 int,和最後一行的 return 0;
  • 可以拆成多行的情況
  • % 在字串中的意思
  • \0 在字串、字元中的意思

上一篇
30天學會C語言: Day 1-C語言起手式
下一篇
30天學會C語言: Day 3-資料也要取名字!
系列文
0基礎也看得懂的程式設計-30天學會C語言30

尚未有邦友留言

立即登入留言