strcmp()函式與strcpy()函式介紹
阿新 • • 發佈:2019-01-08
-
strcmp函式與strncmp函式
在前面的文章中我們看到了strcat函式及它更安全的用法strncat。
接下來我們談談strcmp函式及其安全的用法strncmp。
strcmp函式的作用是比較字串,用法如下strcmp(字串1,字串2),它會比較這兩個字串,如果字串相等,
返還0.
考慮下面的程式碼。
#include<stdio.h> #include<string.h> int main() { char *ch = "hell word"; char *ch1 = "hello word"; char ch2[40] = "hello word"; int a = strcmp(ch, ch1);//不一樣的比較, int b = strcmp(ch1, ch2);//一樣的比較 printf("%d %d", a, b); getch(); return 0; }
輸出結果是 -1 0;前面告訴大家如果字串相同返還0;但如果不同呢。
如果:比較單個字串,比如“A”與“B”,則返還-1;同理,“B’與”A"返還1;返還的值可能不同,只要不是0不就很好。
這個比較與AS||碼有關。但如果兩個字串前面幾個字母相同,那麼strcmp函式會一個一個挨著比較。
對於strncmp函式來講,比較有了限定strcmp(字串1,字串2,限定數字),有了限定數字後,該函式會比較你所限定的
前幾個字元。
2.strcpy與strncpy
strcpy函式的作用是拷貝,拷貝出來的字串叫目標字串,最初的字串被稱為源字串。
用法:strcpy(字串陣列,字串)。
看下面的程式碼
#include<stdio.h>
#include<string.h>
int main()
{
char ch[100];
char *p = "hell word";
printf("%s", strcpy(ch, p));
getch();
return 0;
}
輸出結果:hell word。
從輸出結果我們可以看出,該函式返還的是第一個引數的地址。
同理更安全的選擇是strncpy,你可以在最後的引數寫上一個數字,來確保拷貝的最大字元數,注意\0.
考慮下面的程式碼
#include<stdio.h> #include<string.h> int main() { char ch[5]; char *p = "hell word"; strncpy(ch, p, 3);//這樣寫是對的 ch[4] = '\0';//如果沒有的話,ch就不是一個字元陣列 printf("%s", ch); getch(); return 0; }
執行一下程式,你會發現字元的拷貝不會為你自己新增空字元,考慮一下是否需要新增空字元。