C語言string.h中常用字元函式介紹
阿新 • • 發佈:2019-01-07
strcpy
函式名: strcpy
功 能: 拷貝一個字串到另一個
用 法: char
* strcpy ( char
*destin, char
*source);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
string[10];
char
*str1 = "abcdefghi" ;
strcpy (string, str1);
printf ( "%s\n" , string);
return
0;
}
|
strncpy
函式名: strncpy
原型: char * strncpy ( char
*dest, char
*src, size_t
n);
功能:將字串src中最多n個字元複製到字元陣列dest中(它並不像 strcpy 一樣遇到NULL才停止複製,而是等湊夠n個字元才開始複製),返回指向dest的指標。
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
string[10];
char
*str1 = "abcdefghi" ;
strncpy (string, str1,3);
printf ( "%s\n" , string);
return 0;
}
|
strcat
函式名: strcat
功 能: 字串拼接函式
用 法: char
* strcat ( char
*destin, char
*source);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
destination[25];
char
*blank = " " , *c =
"C++" , *Borland =
"Borland" ;
strcpy (destination, Borland);
strcat (destination, blank); strcat (destination, c);
printf ( "%s\n" , destination);
return
0;
}
|
strchr
函式名: strchr
功 能: 在一個串中查詢給定字元的第一個匹配之處\
用 法: char
* strchr ( char
*str, char
c);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
string[15];
char
*ptr, c = 'r' ;
strcpy (string,
"This is a string" );
ptr = strchr (string, c);
if
(ptr)
printf ( "The character %c is at position: %d\n" , c, ptr-string);
else
printf ( "The character was not found\n" );
return
0;
}
|
strcmp
函式名: strcmp
功 能: 串比較
用 法: int
strcmp ( char
*str1, char
*str2);
看Asic碼,str1>str2,返回值 > 0;兩串相等,返回0
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*buf1 = "aaa" , *buf2 =
"bbb" , *buf3 =
"ccc" ;
int
ptr;
ptr = strcmp (buf2, buf1);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 1\n" );
else
printf ( "buffer 2 is less than buffer 1\n" );
ptr = strcmp (buf2, buf3);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 3\n" );
else
printf ( "buffer 2 is less than buffer 3\n" );
return
0;
}
|
strnicmp
函式名: strnicmp
功 能: 將一個串中的一部分與另一個串比較, 不管大小寫
用 法: int
strnicmp( char
*str1, char
*str2, unsigned maxlen);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*buf1 = "BBB" , *buf2 =
"bbb" ;
int
ptr;
ptr = strnicmp(buf2, buf1);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 1\n" );
if
(ptr < 0)
printf ( "buffer 2 is less than buffer 1\n" );
if
(ptr == 0)
printf ( "buffer 2 equals buffer 1\n" );
return
0;
}
|
strlen
函式名: strlen
功能: strlen 函式求的是字串的長度,它求得方法是從字串的首地址開始到遇到第一個 '\0' 停止計數,如果你只定義沒有給它賦初值,這個結果是不定的,它會從字串首地址一直記下去,直到遇到 '\0' 才會停止。
原型: size_t
strlen ( const
char *s);
#include<stdio.h>
#include <string.h>
int
main()
{ int
i=0;
char
*he = "Hello,world" ;
i= strlen (he);
printf ( "字串長度為%d\n" ,i);
return
0;
} //
執行結果:
字串長度為11
|
strcspn
函式名: strcspn
功 能: 在串中查詢第一個給定字符集內容的段
用 法: int
strcspn ( char
*str1, char
*str2);
程式例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int
main( void )
{
char
*string1 = "1234567890" ;
char
*string2 = "747DC8" ;
int
length;
length = strcspn (string1, string2);
printf ( "Character where strings intersect is at position %d\n" , length);
return
0;
}
|
strdup
函式名: strdup
功 能: 將串拷貝到新建的位置處
用 法: char
*strdup( char
*str);
程式例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int
main( void )
{
char
*dup_str, *string = "abcde" ;
dup_str = strdup(string);
printf ( "%s\n" , dup_str);
free (dup_str);
return
0;
}
|
stricmp
函式名:stricmp
功 能: 以大小寫不敏感方式比較兩個串
用 法: int
stricmp( char
*str1, char *str2);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*buf1 = "BBB" , *buf2 =
"bbb" ;
int
ptr;
ptr = stricmp(buf2, buf1);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 1\n" );
if
(ptr < 0)
printf ( "buffer 2 is less than buffer 1\n" );
if
(ptr == 0)
printf ( "buffer 2 equals buffer 1\n" );
return
0;
}
|
strerror
函式名: strerror
功 能: 返回指向錯誤資訊字串的指標
用 法: char
* strerror ( int
errnum);
程式例:
#include <stdio.h>
#include <errno.h>
int
main( void )
{
char
*buffer;
buffer = strerror ( errno );
printf ( "Error: %s\n" , buffer);
return
0;
}
|
strcmpi
函式名: strcmpi
功 能: 將一個串與另一個比較, 不管大小寫
用 法: int
strcmpi( char
*str1, char *str2);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*buf1 = "BBB" , *buf2 =
"bbb" ;
int
ptr;
ptr = strcmpi(buf2, buf1);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 1\n" );
if
(ptr < 0)
printf ( "buffer 2 is less than buffer 1\n" );
if
(ptr == 0)
printf ( "buffer 2 equals buffer 1\n" );
return
0;
}
|
strnicmp
函式名: strnicmp
功 能: 不注重大小寫地比較兩個串
用 法: int
strnicmp( char
*str1, char
*str2, unsigned maxlen);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*buf1 = "BBBccc" , *buf2 =
"bbbccc" ;
int
ptr;
ptr = strnicmp(buf2, buf1, 3);
if
(ptr > 0)
printf ( "buffer 2 is greater than buffer 1\n" );
if
(ptr < 0)
printf ( "buffer 2 is less than buffer 1\n" );
if
(ptr == 0)
printf ( "buffer 2 equals buffer 1\n" );
return
0;
}
|
strnset
函式名: strnset
功 能: 將一個字串前n個字元都設為指定字元
用 法: char
*strnset( char
*str, char
ch, unsigned n);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
*string = "abcdefghijklmnopqrstuvwxyz" ;
char
letter = 'x' ;
printf ( "string before strnset: %s\n" , string);
strnset(string, letter, 13);
printf ( "string after strnset: %s\n" , string);
return
0;
}
|
strpbrk
函式名: strpbrk
功 能: 在串中查詢給定字符集中的字元
用 法: char
* strpbrk ( char
*str1, char
*str2);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
*string1 = "abcdefghijklmnopqrstuvwxyz" ;
char
*string2 = "onm" ;
char
*ptr;
ptr = strpbrk (string1, string2);
if
(ptr)
printf ( "strpbrk found first character: %c\n" , *ptr);
else
printf ( "strpbrk didn't find character in set\n" );
return
0;
}
|
strrchr
函式名: strrchr
功 能: 在串中查詢指定字元的最後一個出現
用 法: char
* strrchr ( char
*str, char
c);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
string[15];
char
*ptr, c = 'r' ;
strcpy (string,
"This is a string" );
ptr = strrchr (string, c);
if
(ptr)
printf ( "The character %c is at position: %d\n" , c, ptr-string);
else
printf ( "The character was not found\n" );
return
0;
}
|
strrev
函式名: strrev
功 能: 串倒轉
用 法: char
*strrev( char
*str);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
*forward = "string" ;
printf ( "Before strrev(): %s\n" , forward);
strrev(forward);
printf ( "After strrev(): %s\n" , forward);
return
0;
}
|
strset
函式名: strset
功 能: 將一個串中的所有字元都設為指定字元
用 法: char
*strset( char
*str, char c);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
string[10] = "123456789" ;
char
symbol = 'c' ;
printf ( "Before strset(): %s\n" , string);
strset(string, symbol);
printf ( "After strset(): %s\n" , string);
return
0;
}
|
strstr
函式名: strstr
功 能: 在串中查詢指定字串的第一次出現
用 法: char
* strstr ( char
*str1, char
*str2);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
*str1 = "Borland International" , *str2 =
"nation" , *ptr;
ptr = strstr (str1, str2);
printf ( "The substring is: %s\n" , ptr);
return
0;
}
|
strtod
函式名: strtod
功 能: 將字串轉換為 double 型值
用 法: double
strtod ( char
*str, char
**endptr);
程式例:
#include <stdio.h>
#include <stdlib.h>
int
main( void )
{
char
input[80], *endptr;
double
value;
printf ( "Enter a floating point number:" );
gets (input);
value = strtod (input, &endptr);
printf ( "The string is %s the number is %lf\n" , input, value);
return
0;
}
|
strtok
函式名: strtok
功 能: 查詢由在第二個串中指定的分界符分隔開的單詞
用 法: char
* strtok ( char
*str1, char
*str2);
程式例:
#include <string.h>
#include <stdio.h>
int
main( void )
{
char
input[16] = "abc,d" ;
char
*p;
/* strtok places a NULL terminator
in front of the token, if found */
p = strtok (input,
"," );
if
(p) printf ( "%s\n" , p);
/* A second call to strtok using a NULL
as the first parameter returns a pointer
to the character following the token */
p = strtok (NULL,
"," );
if
(p) printf ( "%s\n" , p);
return
0;
}
|
strtol
函式名: strtol
功 能: 將串轉換為長整數
用 法: long
strtol ( char
*str, char
**endptr, int
base);
程式例:
#include <stdlib.h>
#include <stdio.h>
int
main( void )
{
char
*string = "87654321" , *endptr;
long
lnumber;
/* strtol converts string to long integer */
lnumber =
strtol (string, &endptr, 10);
printf ( "string = %s long = %ld\n" , string, lnumber);
return
0;
}
|
strupr
函式名:strupr
功 能: 將串中的小寫字母轉換為大寫字母
用 法: char
*strupr( char
*str);
程式例:
#include <stdio.h>
#include <string.h>
int
main( void )
{
char
string[ ] = "abcdefghijklmnopqrstuvwxyz" , *ptr; //定義為陣列才能修改
/* converts string to upper case chara
|