繼續提升吧!
字串
在C語言中,沒有字串型資料,只能用字符陣列和字符指標來處理字串,
如:
char ca[10]={‘h’,’e’,’l’,’l’,’o’,’\0’};
或
char ca[10]={“hello”};
或
char ca[10]=”hello”;
都表示ca這個字串中有10個字符(包括\0),后面多出的元素自動補\0,但是運算中出現ca=”string!”;這樣的賦值陳述句是不合法的,后期賦值只能使用回圈輪循陣列元素,一個一個寫入,或者用字串處理函式進行賦值,
字串的輸入輸出
printf和scanf
格式控制符為%s /*s為string的意思*/
與字符型資料處理不同的是,用%s后面的變數一定是陣列名,
如:
char ca[10]={“hello”};
printf(“%s\n”,ca); //輸出字串的時候,只寫變數名稱,不要這樣寫,如:ca[5]
printf中可以在s前面加數字和正負號:
printf(“%8s”,ca); // %8s 的意思是:輸出的結果如果不夠八位,補 空格
系統會自動在左邊補空格,輸出結果為:□□□hello
加負號
printf(“%-8s”,ca);
系統會自動在右邊補空格,輸出結果為: hello□□□
scanf在s前面加數字,意義完全不同,也不能加正負號:
scanf(“%3s”,ca);
輸入:
abcde(回車)
電腦會自動截取前面3個字符對ca賦值,ca的值為”abc”,
puts和gets
格式:
puts(字符陣列名);
gets(字符陣列名);
如:
char ca[10];
gets(ca);
puts(ca);
注意:gets可以接收空格和TAB鍵,scanf不可以,
字串處理函式
strcpy(s1,s2):復制(目標串,源串) //相當于賦值,把s2的值賦值給s1
strcat(s1,s2):連接(目標串,源串) // 連接的意思是: 假如 s1 = "ab" s2 = "cd" ,執行函式以后的結果是: s1 = "abcd"; s2 = "cd";
int strlen(s):求長度(字串),回傳長度 //長度是整型 假如:s = "abc"; 回傳的 leng = 3
int strcmp(s1,s2):比較(串1,串2),回傳值>0,表示s1>s2;=0,表示s1=s2;<0表示s1<s2
程式1
// 10_1.字串處理函式 #include <stdio.h> void main() { char ca[5] = "str1"; //宣告字串兩種不同的格式, char cb[5] = { "str2" }; char cc[10]; strcpy(cc,ca); printf("復制串:cc = %s\n", cc); strcat(cc,cb); printf("連接串:cc = %s\n", cc); printf("cc.leng = %d\n", strlen(cc)); //字串的長度 printf("比較 ca 和 cb 大小 = %d\n", strcmp(ca, cb)); }
程式2
//用戶輸入若干個大寫字母,將這些大寫字母轉換成小寫字母輸出, #include <stdio.h> void main() { //用戶輸入大寫字母轉換成小寫字母 char inputAlphabet[100]; //用戶輸入的字符 printf("請輸入大寫字母:"); gets(inputAlphabet); for (int i = 0; i < strlen(inputAlphabet); i++) { if (inputAlphabet[i] >= 65 && inputAlphabet[i] <= 90) { printf("%c", inputAlphabet[i] + 32); } else { printf("退出,重新輸入!"); exit(); } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295943.html
標籤:C
