next up previous contents
Next: 傳送一維陣列至函式 Up: 陣列 Previous: 字元陣列-字串   Contents   DYWANG_HOME

字串處理函式

  1. 字串函式
    1. strcpy(s1, s2): 複製字串 s2 到字串 s1。
    2. strcat(s1, s2): 串接字串 s2 在字串 s1 後。
    3. strlen(s1): 回傳字串 s1 的長度。
    4. strcmp(s1, s2): 比較字串 s1 與 s2 的編碼大小。如果 s1 和 s2 相同,回傳 0;s1<s2 回傳小於 0 的值;s1>s2 回傳大於 0 的值。
    5. strchr(s1, ch): 回傳字串 s1 中字元 ch 位址的指標。
    6. strstr(s1, s2): 回傳字串 s2 第一次出現在字串 s1 的位址指標。
  2. 範例
    [dywang@dyw219 zzz]$ vim array4.c
    [dywang@dyw219 zzz]$ cat array4.c
    #include <stdio.h>
    #include <string.h>
    
    main () {
    	char str1[11]="Hello", str2[11], str3[11];
    
    	printf("Enter a string: ");
    	scanf("%s", str2);
    
    	printf("str1 = %s\n", str1 );
    	printf("str2 = %s\n", str2 );
    	strcpy(str3,str1);
    	printf("strcmp(str1,str3) = %d\n", strcmp(str1,str3) );
    	printf("strcpy(str3,str1), str3 = %s\n", str3 );
    	printf("strcat(str3,str2) = %s\n", strcat(str3,str2) );
    	printf("str3 = %s\n", str3 );
    	printf("strlen(str2) = %d\n", strlen(str2) );
    	printf("strcmp(str1,str2) = %d\n", strcmp(str1,str2) );
    	printf("strchr(str1, 'e') = %d\n", strchr(str1, 'e') );
    	printf("strstr(str1, str2) = %d\n", strstr(str1, str2) );
    }
    
  3. 編譯
    [dywang@dyw219 zzz]$ gcc -o array4 array4.c
    
  4. 執行結果一:輸入字串 str="-ABC",strlen(str2) 回傳 str2 長度 4,strcmp(str1,str2) 回傳 27,表示 str2 比 str1 大 (ASCII 值),strstr(str1,str2) 回傳 0,表示在 str1 找不到字串 str2。
    [dywang@dyw219 zzz]$ ./array4
    Enter a string: -ABC           
    str1 = Hello
    str2 = -ABC
    strcpy(str3,str1), str3 = Hello
    strcmp(str1,str3) = 0
    strcat(str3,str2) = Hello-ABC
    str3 = Hello-ABC
    strlen(str2) = 4
    strcmp(str1,str2) = 27
    strchr(str1, 'e') = 1641270433
    strstr(str1, str2) = 0
    
  5. 執行結果二:輸入字串 str="Hello",strlen(str2) 回傳 str2 長度 5,strcmp(str1,str2) 回傳 0,表示 str2 與 str1 一樣 (ASCII 值),strstr(str1,str2) 回傳位址 935582496 是 str1 中 H 的位址,而 strchr(str1,'e') 回傳 935582497 剛好是 H 的下一個位址。
    [dywang@dyw219 zzz]$ ./array4
    Enter a string: Hello
    str1 = Hello
    str2 = Hello
    strcpy(str3,str1), str3 = Hello
    strcmp(str1,str3) = 0
    strcat(str3,str2) = HelloHello
    str3 = HelloHello
    strlen(str2) = 5
    strcmp(str1,str2) = 0
    strchr(str1, 'e') = 935582497
    strstr(str1, str2) = 935582496
    



De-Yu Wang 2021-01-11