1. 程式人生 > >sprintf() strcat() strcmp() 函式

sprintf() strcat() strcmp() 函式

sprintf()函式:

函式功能:把格式化的資料寫入某個字串
函式原型:int sprintf( char *buffer, const char *format [, argument] … );
返回值:字串長度(strlen)

char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //產生:"I love CSDN. "  這字串寫到s中

sprintf(s, "%10.3f", 3.1415626); //產生:" 3.142"

------------------------------------------------------------------------------------------------

strcat() 函式:

函式功能:用來連線字串

函式原型:char *strcat(char *dest, const char *src);

【引數】dest 為目的字串指標,src 為源字串指標。

strcat() 會將引數 src 字串複製到引數 dest 所指的字串尾部;dest 最後的結束字元 NULL 會被覆蓋掉,並在連線後的字串的尾部再增加一個 NULL。

注意:dest 與 src 所指的記憶體空間不能重疊,且 dest 要有足夠的空間來容納要複製的字串。

【返回值】返回dest 字串起始地址。

#include <stdio.h>
#include <string.h>

int main ()
{
    char str[80];
    strcpy (str,"these ");
    strcat (str,"strings ");
    strcat (str,"are ");
    strcat (str,"concatenated.");
    puts (str);
    return 0;
}

輸出結果:
these strings are concatenated.

----------------------------------------------------------------------------------------------

strcmp()函式:

函式功能:用來比較字串(區分大小寫)

函式原型:int strcmp(const char *s1, const char *s2);

【引數】s1, s2 為需要比較的兩個字串。

字串大小的比較是以ASCII 碼錶上的順序來決定,此順序亦為字元的值。strcmp()首先將s1 第一個字元值減去s2 第一個字元值,若差值為0 則再繼續比較下個字元,若差值不為0 則將差值返回。例如字串"Ac"和"ba"比較則會返回字元"A"(65)和'b'(98)的差值(-33)。

【返回值】若引數s1 和s2 字串相同則返回0。s1 若大於s2 則返回大於0 的值。s1 若小於s2 則返回小於0 的值。

注意:strcmp() 以二進位制的方式進行比較,不會考慮多位元組或寬位元組字元;如果考慮到本地化的需求,請使用 

strcoll() 函式。

#include <string.h>
main(){
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";
    printf("strcmp(a, b) : %d\n", strcmp(a, b));
    printf("strcmp(a, c) : %d\n", strcmp(a, c));
    printf("strcmp(a, d) : %d\n", strcmp(a, d));
}

輸出結果:
strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0