2010年9月19日 星期日

C語言字串處理

C語言對字串的定義是0結尾的字元陣列就是字串

-----------------以下節錄網路範例------------------

int main() {
    char *p = "abc"; // 指標宣告, "abc"這個陣列會放在記憶體的"常數區塊",不允許被修改
    char q[] = {'a','b','c',0}; // 陣列宣告,同時給予初始值
    char r[] = "abc"; // 陣列宣告, 此空間就放在堆疊上
    q[0] = '!'; // q字串變成 "!bc"
    r[0] = '!'; // r字串變成 "!bc"
    *p = '!'; // 這在Unix系統上會造成Segmentation fault (core dumped)
}
--------------------------------------------------------------

由於C語言對於字串的定義是結尾為0的字元陣列
在處裡的時候要小心輸入溢位的問題
最簡單防止溢位的方法就是告訴 scanf 可輸入的上限
如:


main() {
    char[5] str_array;
    printf("請輸入小於5個字數:");
    scanf("%4s", str_array);
    printf("str_array = %s\n", str_array);
}
字串的一些可用函式


字串長度
int strlen(char s[])
字串複製


void strcpy(char d[], char s[]) //把s的內容給d
字串相加


void strcat(char *s1, char *s2) //把s1的內容後面加上S2 並存入s1


沒有留言:

張貼留言