《卡提諾論壇》點評評分字數公告

論壇小幫手 2017-6-7 15:17:01 發表於 站務公告 [顯示全部樓層] 回覆獎勵 閱讀模式 5 2804
卡提諾論壇 評分 點評 功能說明如下:

評分:
中文 15個字
英文 15個字

#共40個字符



點評:
中文 82個字
英文 180個字

#共240個字符





有關於字符的說明:

一個英文字母、數字或其他的符號,我們稱它為字元。要表示一個字元,我們可以用一對單引號 ' 把該字元夾起來,例如:

char c='a';
而要在 scanf 及 printf 讀入及印出一個字元則是使用 %c。除此之外,在 C 語言中也有一些特殊字元,通常以反斜線 \ 開頭:

'\0'    空字元,用於字串的結束
'\n'    New Line,換行符號
'\r'    Carriage Return,回歸鍵(即 Enter 鍵)
'\t'    Tab,跳格
'\b'    Backspace,倒退鍵
'\a'    Bell,嗶一聲
'\\'    反斜線 \
'\''    單引號 '
'\"'    雙引號  "


事實上,字元在電腦中是以一個八位元的整數來儲存(即 1 Byte),而這個符號與數字的對應關係我們稱為 ASCII 碼 (American Standard Code for Information Interchange)

例如:


數字

符號

數字

符號

數字

符號

48

0

65

A

97

a

49

1

66

B

98

b

50

2

67

C

99

c

51

3

68

D

100

d

52

4

69

E

101

e

...

...

...

...

...

...



也就是說,其實字元也是一個數字,因此也可以拿來做加減乘除等四則運算。例如


char c='a';
c=c+3;
printf("%c", c);

上面的例子會印出字元 d。至於下面的程式可以印出 A 到 Z 及它們的 ASCII 碼值:


#include <stdio.h>
void main()
{
char c;
for(c='A'; c<='Z'; c++)
   printf("%c %d\n", c, c);
}


二、字串

接下來,我們討論到字串,字串就是一段文字,我們可以用一對雙引號 " 把該段文字夾起來。而要在 scanf 及 printf 讀入及印出一個字串則是使用 %s。由於 C 語言中並沒有字串的變數型態,而是用字元的陣列來儲存一個字串,例如:


char s[20], t[20]="TCGS";
scanf("%s", s);
printf("%s", s);

上面的例子宣告了 s 是一個字串,長度為 20 個字元。我們在宣告字串的時候要注意它的長度,以免位數不夠造成程式錯誤。事實上,每個字串後面都有一個 '\0' 的字元,也就是說,上面的 "TCGS" 字串,事實上總共用了 5 Bytes,這一點要特別注意。另外,由於 s 本身就是這個字元陣列的位址,所以在 scanf 裡我們不需要加上 & 符號。

不過,用 scanf 讀取字串時,遇到空白字元便會結束,例如輸入 "Hello! TCGS!",則讀進來的字串只有 "Hello!" 而已。為了避免這個情況,我們再介紹兩個函數 gets 、puts (也是定義在 stdio.h),gets 的功能是讀入字串,而 puts 則是印出字串:


gets(s);
puts(s);

上面要注意的是,如果是使用 gets,會連換行一起讀進來,也就是字串後面會多一個 '\n' 字元。也由於 C 語言中的字串是字元的陣列,所以如果我們要知道第 N 個字元,就是用 s[N-1] 的方式取得。不過,如果我們要做字串的比對、字串串接、字串長度等功能,沒有運算子可以使用,故必須使用函數來處理。和字串相關的函數都是定義在 string.h 中,常用的字串函數如下:


strcpy(s1, s2)    將 s2 的內容複製到 s1

strcmp(s1, s2)    比較 s1、s2 的內容,如果相等傳回 0

strcat(s1, s2)    將 s2 串接到 s1 後面

strstr(s1, s2)    傳回 s2 字串在 s1字串中第一次出現的位置

strlen(s1)    傳回 s1 的長度(不含 '\0' 字元)

strrev(s1)    將 s1 字串倒置


已有(7)人回文

切換到指定樓層
takahasi 發表於 2017-6-10 07:15
說實話,有關有關於字符的說明我完全看傻眼.....
GGCMEAT 發表於 2017-6-13 00:17
上面的範例
如果直接執行應該是看不到的
需要加上system("PAUSE");
這是定義在 stdlib.h裡面的
所以要記得定義囉

有趣的是PAUSE不管大寫小寫都可以編譯成功
這是因為其實SYSTEM語法裡面打得程式碼
其實會等同於在WINDOWS系統的CMD下面執行

所以如果打上SYSTEM("shutdown -r -t 10");
會發生不是太美妙的事情~
PS.不要輕易嘗試

另外printf和scanf語法有可能造成緩衝區溢出的問題
這問題其實頗嚴重的
所以為了安全起見現今新的IDE會讓使用者更換成printf_s和scanf_s
lkeunnan 發表於 2017-6-25 08:49
這算程式教學嗎? 沒學過c語言
ntustzeus 發表於 2017-6-28 20:46
這和使用者有什麼關係啊...
評分一直被吃字,如果和這個有關係的話,
表示你們沒有使用對應的寬字元相關函數???
Wiki是個好東西

讓人打中文正確顯示有這麼困難嗎?
王烏鴉 發表於 2017-9-26 13:47
嗯嗯,字要是更多就可以用留言了
不過我還是不懂,"為啥變成一堆英文??
and 不用企圖教我了,我真不懂(暈),反正別用這符號就對了....(自暴自棄)
你需要登入後才可以回覆 登入 | 註冊會員

本版積分規則

論壇小幫手

LV:17 超級版主

追蹤
  • 1115

    主題

  • 4381

    回文

  • 53

    粉絲