2)sizeof和strlen區別
//使用字串初始化,常用
char buf8 = "abc";
//strlen: 測字串長度,不包含數字0,字元'\0'
//sizeof:測陣列長度,包含數字0,字元'\0'
printf("strlen = %d, sizeof = %d\n", strlen(buf8), sizeof(buf8));
char buf9[100] = "abc";
printf("strlen = %d, sizeof = %d\n", strlen(buf9), sizeof(buf9));
3)'\0' 後面最好別跟數字,因為幾個數字合起來有可能是乙個轉義字元
//\012相當於\n
char str = "\0129";
printf("%s aaaa\n", str);
4)字元'\0', 數字0, 字元'0', null的區別
a) 字元'\0' ascii碼值為 0 的字元
字元'\0' 和 數字 0 是等級的,'\0'中'\'是轉義字元
char buf[100];
//下面是等級,在陣列第10個位置設定字串結束符
buf[10] = 0;
buf[10] = '\0';
b) 字元'0'是字串的某個字元內容為'0', ascii碼值為 48 的字元
char buf[100];
buf[0] = '0'; //第0個字元為字元 '0'
c) null 標準標頭檔案(stdio.h)的巨集 其值為數字 0
4)陣列法、指標法操作字串
char buf = "abdgdgdsg"
char *p = buf; //buf是陣列首元素位址,它也是指標
for (i = 0; i < strlen(buf); i++)
注意:陣列名也是指標,陣列首元素位址,但是,它是乙個唯讀常量
p++; //ok
buf++; //err
5)字串拷貝函式
int my_strcpy(char *dst, char *src)
//輔助變數把形參接過來
char *to = dst;
char *from = src;
//*dst = *src
//dst++, src++
//判斷 *dst是否為0, 為0跳出迴圈
while (*to++ = *from++) ;
return 0;
}2、專案開發常用字串應用模型
1、利用strstr標準庫函式找出乙個字串中substr出現的個數
char *p = "11abcd111122abcd333abcd3322abcd3333322qqq";
int n = 0;
do else //如果沒有匹配的字串,跳出迴圈
} while (*p != 0); //如果沒有到結尾
2、兩頭堵模型
char *p = " abcddsgadsgefg ";
int begin = 0;
int end = strlen(p) - 1;
int n = 0;
if(end < 0)
//從左往右移動,如果當前字元為空,而且沒有結束
while (p[begin] == ' ' && p[begin] != 0)
//從右往左移動,如果當前字元為空
while (p[end] == ' ')
n = end - begin + 1; //非空元素個數
strncpy(buf, p + begin, n);
buf[n] = 0;
//如何證明strncpy()拷貝不會自動加字串結束符'\0'
char dst = "aaaaaaaaaaaaaaa";
strncpy(dst, "123", 3);
printf("dst = %s\n", dst); //dst = "123aaaaaaaaaaaa"
基礎常識 什麼是字元以及字串的定義
當你使用到乙個非數字的時候,可能要儲存字母或者標點符號之類的字元時候,在計算機裡它只能儲存一些數字資訊,此時它會把字元資料轉換成一種數字編碼,以便於計算機去識別這些字元。那麼字母列印非字元呢?單引i號適用於字元,數字以及標點符號,但你遇到ascii碼表的時候,你會發現這些字元你是列印不了的,那麼就要...
ORACLE in 字串,字串,字串
因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...