1 / 24

程式設計 II

程式設計 II. 字串. 字串的基本慨念. 字串是字元的陣列 char str[10]; 字串是指標所指定一串字元 char *str;. 字串的讀取與輸出. 使用 scanf() 與 printf() 使用 gets() 與 puts(). 字串的位址探討. 字串可視為字元陣列,每個字佔一個位元組的記憶體空間。輸出字串可用一個 for 、 while 等迴圈來對陣列內容一一輸出。. 字串 String 的定義. 在 C 語言中使用來儲存一串字元的一種資料結構 比字元陣列多出一個控制字元 『 』 , 用來表示字串的結束 字串

Download Presentation

程式設計 II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 程式設計II 字串

  2. 字串的基本慨念 • 字串是字元的陣列 char str[10]; • 字串是指標所指定一串字元 char *str;

  3. 字串的讀取與輸出 • 使用scanf()與printf() • 使用gets()與puts()

  4. 字串的位址探討 • 字串可視為字元陣列,每個字佔一個位元組的記憶體空間。輸出字串可用一個for、while等迴圈來對陣列內容一一輸出。

  5. 字串String 的定義 • 在C語言中使用來儲存一串字元的一種資料結構 • 比字元陣列多出一個控制字元『\0』,用來表示字串的結束 • 字串 • char a[]="String"; • char a[]={'S','t','r','i','n','g','\0'}; • 字元陣列 • char b[]={'S','t','r','i','n','g'};

  6. 字串的宣告(一維陣列) • 語法 • char str[7]={'H','e','l','l','o','!','\0'}; • 以類似字元陣列宣告 • char str[7]="Hello!"; • 直接字串命名的方式 • char str[ ]="Hello!"; • 編譯器會自動配置記憶體空間

  7. 輸出字串中每一個元素的內容及位址 1 #include<stdio.h> 2 main(){ 3 char str[] = "example"; 4 int i=0; 5 while(str[i]!='\0'){ 6 7 i++; 8 } 9 } str[i] &str[i] • e 1245044 • x 1245045 • a 1245046 • m 1245047 • p 1245048 • l 1245049 • e 1245050 printf("%c %i\n", str[i] , &str[i]);

  8. 字串陣列的宣告 char str[2][8]={"string", "STRING2", "ablmcc"}; 在陣列中的擺放位置如下 str[0]"string" str[1] "STRING2" str[2] "ablmcc"

  9. 建立一個字串陣列 1 #include<stdio.h> 2 main(){ 3 int i; 4 char str[4][10]={"one", "two", "three", "four"}; str[0]str[1]str[2]str[3] one two three four 5 for(i=0; i<4; i++) 6 printf("%s\n", str[i]); 7 }

  10. 字串的輸入 • scanf() • gets() • 遇到空白字元時,並不會結束, • 其結束的條件為遇到結束符號『\0』 • 沒有上限

  11. 利用scanf()輸入字串,並輸出 1 #include<stdio.h> 2 main(){ 4 char str[20]; 5 printf("請輸入一字串:"); 6 scanf("%6s", str);/*指定欄寬為6個字元*/ 7 printf("輸入的字串為:%s", str); 8 } • 請輸入一字串:123456789 • 輸入的字串為:123456

  12. 使用gets()輸入字串,並將之輸出 1 #include<stdio.h> 2 main(){ 4 char str[20]; 5 printf("請輸入一字串: "); 6 gets(str); 7 printf("輸入的字串為:%s \n", str); 8 } 請輸入一字串:This is a pen 輸入的字串為:This is a pen

  13. 字串的輸出 • printf() • 一次能輸出多個字串 • 具格式化輸出的功能 • puts() • 一次只能輸出一個字串 • 不具格式化輸出的功能 • 每輸出一個字串,puts()也將輸出一個跳列字

  14. gets()輸入字串,puts()輸出字串 1 #include<stdio.h> 2 main(){ 4 char input[20]; 5 puts("請輸入字串: "); 免費送\n • 請輸入字串: 6 gets(input); 7 puts(input); 8 } This is a pen This is a pen |

  15. 其它字串的處理函數 • 使用前,需加入string.h的標頭檔 • strlen(s) :計算字串長度 • strcmp(s1,s2) :比較字串 (s1-s2) • strcpy(s1,s2); :複製字串 s1s2 • strcat(s1,s2); :合併字串 s1s1+s2 • toupper(c) :將字符轉換成大寫字母 • tolower(c) :將字符轉換成小寫字母

  16. 字串的長度 1 #include<stdio.h> 2 #include<string.h> 3 main(){ 4 char str[30]; 5 int n; 6 printf("輸入一字串:"); 7 gets(str); • 輸入一字串:cat & dog 字串長度為:9 8 n = strlen(str); /*求str的長度*/ 9 printf("字串長度為:%i\n", n); 0 }

  17. strcmp(s1,s2)函數 • 語法 • 整數型態變數 = strcmp(字串1,字串2) • 說明 • n = strcmp (s1,s2) 會將字串1與字串2做比較 • 整數型態變數 n 0代表 s1=s2 -1 表示 s1<s2 +1 表示 s1>s2

  18. 檢查輸入的字串是否相同 1 #include<stdio.h> 2 #include<string.h> 3 main(){ 4 char str1[20], str2[20]; 5 int n; • 輸入字串1:computer • 輸入字串2:COMPUTER 6 printf("輸入字串1:"); 7 gets(str1); 8 printf("輸入字串2:"); 9 gets(str2);

  19. 字串比較 1 n = strcmp (str1, str2); 2 if(n==0) 3 puts("str1=str2"); 請輸入字串1:comp 請輸入字串2:comp str1=str2 請輸入字串1:cpu 請輸入字串2:mouse str1<str2 4 else if(n<0) 5 puts("str1<str2"); 6 else 7 puts("str1>str2"); 8 } 請輸入字串1:fan 請輸入字串2:FAN str1>str2

  20. strcpy()函數 • 語法 • strcpy (字串1, 字串2); • 說明 • 字串1:將要被複製成跟字串2相同內容的字串 • 字串2:將要複製給字串1的字串  • 此函數可將字串2變數的內容拷貝到字串1的內容(包含空字元) // str1str2

  21. strcat()函數 • 語法 • strcat (str1, str2); • 說明 • 合併 str1及str2 • str2將會覆蓋住str1字串的結束字元'\0',且保留本身的結束字元'\0'

  22. 合併前 str1= Open 合併後 str1= Open University 使用strcat()函數,將兩個字串合併 1 #include<stdio.h> 2 #include<string.h> 3 main(){ 4 char str1[20]="Open "; 5 char str2[20]="University"; 6 printf("合併前str1=%s\n", str1); 7 strcat (str1, str2); 8 printf("合併後str1=%s\n”, str1); 9 }

  23. toupper()函數及tolower()函數 • 語法 • 字元 = tolower(字元); • 字元 = toupper(字元); • 說明 • 需加入ctype.h的標頭擋 • toupper(c)函數可以將字元c強制轉換成大寫 • tolower(c)函數可以將字元c強制轉換成小寫

  24. 小寫字串轉換成大寫 並將輸入的大寫字串轉換成小寫 11 printf("輸入字串二: "); 12 gets(str2); 13 for (i = 0 ; i<strlen(str2); i++) 14 str2[i] = toupper( str2[i] ); 15 printf("小寫轉大寫: %s\n", str2); 16 } 1 #include<stdio.h> 2 #include<ctype.h> 3 main(){ 4 int i; 5 char str1[10], str2[10]; 6 printf("輸入字串一: "); 7 gets(str1); 8 for (i = 0 ; str1[i] != '\0'; i++) 9 str1[i] = tolower( str1[i] ); 10 printf("大寫轉小寫: %s\n", str1); • 輸入字串一: ABCd • 大寫轉小寫:abcd • 輸入字串二: eFg • 小寫轉大寫: EFG

More Related