1. 程式人生 > >strcmp()函式與strcpy()函式介紹

strcmp()函式與strcpy()函式介紹

  1. 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;
}

執行一下程式,你會發現字元的拷貝不會為你自己新增空字元,考慮一下是否需要新增空字元。