一、strlen和sizeof的區別
#include
#include
main()
答案為6和5.
注意這個字串的長度用strlen來求的話,我們就不用算後面的\0,但是用sizeof來算的話就要算入\0.
『0』ascii不為0,但是』\0』的為空值。
字元賦值:char*sp,s[10];
如果是sp=「hello」,那麼是正確的,這個代表將hello的位址存放到sp當中,如果是s=「hello」,這個是錯的,s為陣列首元素的位址,不能夠把「hello」字串直接賦值給陣列的乙個位址。
二、如何將字串賦值給陣列char s[10]=這個裡面的賦值少於十,所以後面的第四個字元開始,後面全部用字串結束標誌『\0』來填充。
char s=
則這個括號裡面應該是**的6;
char =
這個表示式是錯誤的,因為沒有字串結束標誌\0.
三、正確的字串的賦值方法最常用的幾種:1、char s[10]=
2、char s[10]=「string」
3、char s=「string」
4、char m[10];int i;
for(i=0;i<9;i++)
m[i]=』\0』;
5用指標來指字串
①char *p=「djksjhfsjk」
②char a[10]=「shkjhhsf」,*p;
p=a;
printf("%s",p)
四、字串的輸入與輸出①當對字串進行輸出,輸出項可以是字串常量,可以是字元陣列名,也可以是已指向字串的字元指標變數
②當對字串輸入時,輸入項可以是字元陣列名,也可以是字元指標變數,當輸入的為指標變數的時候,指標變數必須由足夠的連續儲存單元。
如:
#include
main()
我們討論如果以上程式輸入的是abcd,則我們輸出的是abcd;
如果輸入的是a bcd;則只會輸出a;因為空格,回車符以及tab鍵都作為輸入資料的分隔符而不能被讀入。
五、當輸入的是陣列元素的位址時,輸入的字元將從這一元素開始,依次輸出存放到該陣列中。#include
main()
;scanf
("%s"
,a);
//abcd在記憶體當中是abcd\0*****
printf
("%s\n"
,a);
}
如果該程式輸入的是abcd,那麼是從a[0]開始儲存的,所以我們輸出的結果是abcd.
現在將上面的程式改一下為
#include
main()
;scanf
("%s"
,a[3
]);//***abcd\0**
printf
("%s\n"
,a[3])
;}
如果該程式輸入abcd的話,我們將會輸出***abcd。
六、字串陣列
*(p[1]+1)代表的是p[2]的位址。
char a[5]=
char[3][5]=
七、用字串處理的函式字串賦值函式 strcpy ,copy
呼叫形式 strcpy(s1,s2)
strlen:求字串的長度,但是長度不會加入\0;
strcmp:比較兩個字串的大小,誰先大就誰大
strcat:連線兩個字串。strcat(s1,s2),將s2連線到s1後面。
注意:這個連線以及複製都是需要將\0連帶一起的連線以及複製的,不要忽略了。八、程式舉例
①、編寫函式slength(char*s),函式返回指標
s所指字串的長度,即相當於庫函式strlen的功能
#include
intslength
(char
*s)return n;
}main()
②編寫scopy(char *s,char *t),將指標t所指的字串複製到指標s所指的儲存空間中。
#include
void
scopy
(char
*s,char
*t)main()
void
scopy
(char
*s,char
*t)
③編寫函式scomp(chars1,chars2),將兩個字串s1和s2進行比較,若串s1=串s2,函式值返回值為0,若串s1>串s2,函式值為正數;若串s1《串s2,則函式值為負值,即相當於strcmp的功能。
#include
#define n 40
#define n 61
intgettext
(char
(*t)
[n])
;void
puttext
(char t[
][n]
,int s)
;int
scomp
(char
*s1,
char
*s2)
main()
④編寫程式從終端讀入若干文字行(不超過4行,每行不超過60個字元),遇到行結束輸入,然後將此文字左側加上行號後輸出。
#include
main()
intgettext
(char
(*t)
[n])
return i;
}void
puttext
(char t[
][n]
,int s)
}
⑤從輸入的若干個字元中找出最小的串輸出
#include
#define n 40
#define m 50
intgetstr
(char t[n]
[m])
return i;
}char
*findmin
(char t[
][m]
,int s)
}main()
C語言知識點 結構體
郝斌老師講解問題的四 寶 為什麼需要a 什麼是a 怎麼用a 使用a需要注意哪些問題 為了表示一些複雜的事物,而普通的基本型別無法滿足實際要求 舉個例子 乙個學生有 int age float scrore char 三個屬性,定義乙個學生可以使用 int student1age 10 float s...
c語言結構體知識點
一 結構體和共用體以或使用者定義型別 如 typedef 型別名 識別符號 typedef int integer 該語句把ineger說明成了乙個int 的型別名,在此說明之後,可以用識別符號integer來定義整型變數 例如 ineger a 等價於int a 例如 typedef char c...
結構體知識點總結
對於結構體的知識點,我主要分為以下幾點來講解 結構體的宣告 結構體型別的建立 結構體成員的訪問 結構體的初始化 結構體內存對齊 位段。1.結構體的宣告 struct stu 分號不能丟2.結構體型別的建立 有兩種建立的方法,第一種 struct stu struct stu s1 定義了乙個結構體變...