1.字串概念
字串是位於雙引號中的字串行
在記憶體中以「\0」結束,所佔位元組比實際多乙個
2.字串的初始化
- 在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個字串。前面介紹字串常量時,已說明字串總是以『\0』作為串的結束符。因此當把乙個字串存入乙個陣列時,也把結束符『\0』存入陣列,並以此作為該字串是否結束的標誌。有了『\0』標誌後,就不必再用字元陣列的長度來判斷字串的長度了。
- 初始化
char name[9] = "ucc"; //在記憶體中以「\0」結束, \0ascii碼值是0
char name1[9] = ;
char name2[9] = ;
char name3[9] = ;//靜態陣列如果沒有賦值預設就是0,0就相當於\0
- 錯誤的初始化方式
//不正確地寫法,結尾沒有\0 ,只是普通的字元陣列
char name4 = ;
// \0的作用:字串結束的標誌
char name = "c\0ool";
printf("name = %s\n",name);
輸出結果: c
使用的格式字串為「%s」,表示輸入、輸出的是乙個字串
字串的輸出
輸出%s的本質就是根據傳入的name的位址逐個去取陣列中的元素然後輸出,直到遇到\0位置
字串輸入
charch[10];
scanf("%s",ch);
注意:對乙個字串陣列, 如果不做初始化賦值, 必須指定陣列長度
ch最多存放由9個字元構成的字串,其中最後乙個字元的位置要留給字串的結尾標示『\0』當用scanf函式輸入字串時,字串中不能含有空格,否則將以空格作為串的結束符。
小練:使用scanf() 從控制台輸入乙個字串,然後使用printf() 將其輸出。
charstr[9];
scanf("%s", str);
printf("str = %s\n", str);
利用sizeof字串長度
因為字串在記憶體中是逐個字元儲存的,乙個字元占用乙個位元組,所以字串的結束符長度也是占用的記憶體單元的位元組數。
char name = "65879";
int size = sizeof(name);// 包含\0
printf("size = %d\n", size);
輸出結果:6
利用系統函式
格式: strlen(字元陣列名)
功能:測字串的實際長度(不含字串結束標誌『\0』)並作為函式返回值。
char name = "65879";
size_tlen = strlen(name2);
printf("len = %lu\n", len);
輸出結果:5
字串小結
1 獲取字串的長度 strlen size t strlen const char str 功能 計算字串的有效長度,不包含0。返回值 返回字串的字元數 strlen 函式計算的是字串的實際長度,遇到第乙個0結束。函式返回值一定是size t,是無符號的整數,即typedef unsigned in...
字串小結
string的第乙個內容是hash。這個強有力的優化方式會給解題帶來巨大便利,很可惜的是我並沒有能參透。據我理解,hash實際上就是將待雜湊的資料根據某種規則重新對映的乙個過程,而這個過程往往會大大的降低資料的空間複雜度和訪問所需的時間複雜度。比如以下數列 12,23,34,45,50,我設定乙個雜...
字串操作小結
上學那會就對字串這塊不甚理解,當時也懶得總結!現在開始工作了,字串操作這塊又被提上日程,於是乎這次一定要稍微寫點東西 string和stringbuffer 找工作那會,這兩個類總是會被提到,無外乎說說他們的區別與用法,其實對於它們本身而言string類是字串常量,是不可更改的常量。而stringb...