一、字元串輸入 1. 輸入單個字元串 可以使用 scanf 函數,以空格為分割輸入字元串,代碼如下: 2. 輸入整行字元串 可以使用 gets 函數,以 '\n' 為分割輸入整行字元串,代碼如下: 二、字元串處理 1. 字元串拷貝 可以使用 strcpy 函數,代碼如下: 註意:1. str1 會覆 ...
一、字元串輸入
1. 輸入單個字元串
可以使用 scanf 函數,以空格為分割輸入字元串,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s", str) != EOF) { 8 printf("%s\n", str); 9 } 10 11 return 0; 12 }
2. 輸入整行字元串
可以使用 gets 函數,以 '\n' 為分割輸入整行字元串,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str[100]; 6 // 以 '\n' 為分割輸入整行字元串 7 while(gets(str) != NULL) { 8 printf("%s\n", str); 9 } 10 11 return 0; 12 }
二、字元串處理
1. 字元串拷貝
可以使用 strcpy 函數,代碼如下:
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100]; // 一個一個輸入字元串,以空格為結尾 while(scanf("%s", str1) != EOF) { strcpy(str2, str1); // 將 str1 拷貝到 str2 printf("%s %s\n", str1, str2); } return 0; }
註意:1. str1 會覆蓋 str2 內容;2. 定義數組是,str2 長度要大於或等於 str1。
也可以使用 strncpy 函數,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strncpy(str2, str1, 3); // 將 str1的前3個字元 拷貝到 str1 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
註意:str2 的前 n 個字元會被 str1 的前 n 個字元覆蓋。
2. 字元串連接
可以使用 strcat 函數,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strcat(str2, str1); // 將 str1 接到 str2 後面 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
註意:要註意 str2 的長度為 str1 與原 str2 長度之和,str2 最後的 '\0' 字元會自動消失。
也可以使用 strncat 函數,將字元串的前 n 個字元連接到另一個字元後面,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strncat(str2, str1, 3); // 將 str1 的前3個字元接到 str2 後面 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
3. 字元串比較
可以使用 strcmp 函數,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 int ptr = strcmp(str1, str2); // 比較 str1,str2 9 if(ptr < 0) { // 返回值小於0 10 printf("%s < %s\n", str1, str2); // str1<str2 11 } else if(ptr == 0) { // 返回值等於0 12 printf("%s == %s\n", str1, str2); // str1=str2 13 } else { // 返回值大於0 14 printf("%s > %s\n", str1, str2); // str1>str2 15 } 16 } 17 18 return 0; 19 }
4. 字元串長度
可以使用 strlen 函數,代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100]; 6 // 一個一個輸入字元串,以空格為結尾 7 while(scanf("%s", str1) != EOF) { 8 // 輸出字元串長度 9 printf("strlen = %d\n", strlen(str1)); 10 } 11 12 return 0; 13 }