C语言字符串函数总结:
1.字符处理库(ctype)中的函数
2.stdio中的字符串和字符输入/输出的函数
3.通用实用库stdlib中的字符串转换函数
4.字符串处理库string中的字符串处理函数
C语言的字符串实际上是存储单个字符的数组,结尾包含一个结束该字符串的特别的字符("空字符",用'\0'表示)。
char string1[]="first"实际上有6个元素。
char color="blue"
注意p[i]不能修改,若需修改应用字符数组。
一、.字符处理库(ctype)中的函数
#include<ctype.h>
函数原型:int f(int c)
isdigit, isalpha, isalnum, isxdigit, islower, isupper, tolower, toupper,
isspace,空白字符:新行符\n, 空格,回车''\r",水平制表符"\t", 垂直制表符"\v"
isctrl, ispunct, isprint, isalpha
二、stdio中的字符串和字符输入/输出的函数
int getchar(void)
char * get(char * s)
int putchar(int c)
int puts(const char * s)
int sprintf(char * s, const char * format)
int sscanf(char * s, const char * format);
三、stdlib中的字符串转换函数
#include<stdlib.h>
1.
附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
2.
3.
4. strtod(将字符串转换成浮点数)
5.strtol(将字符串转换成长整型数)
6. strtoul(将字符串转换成无符号长整型数)
示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double d;
char * string="51.2 String";
char * strPtr;
d=strtod(string, &strPtr);
printf("%f And %s", d, strPtr);
return 0;
}
输出:51.200000 And String
四、string.h中的字符串处理函数
(一)字符操作函数
1. char * strcpy(char * s1, const char * s2)
2. char * strncpy(char * s1, const char * s2, size_t n)
3. char * strcat(char * s1, const char * s2)
4. char * strncat(char * s1, const char * s2, size_t n)
注意:
strncpy不一定拷贝第二个参数的终止符'\0'(仅当n至少比s2长度大1时才拷贝)
但strncat则会自动将'\0'拷贝到结果后边。
#include<stdio.h>
#include<string.h>
int main()
{
char x[]="Happy EveryDay";
char y[]="Happy";
char z[100];
//strcpy
printf("strcpy Test:");
printf("%s\n",strcpy(z,x));
//strncpy
printf("strncpy Test:");
strncpy(z,x,5);
z[5]='\0';
puts(z);
//strcat
printf("strcat Test:");
printf("%s\n", strcat(z,y));
//strncat
printf("strncat Test:");
printf("%s\n", strncat(z,y,2));
return 0;
}
输出:
strcpy Test:Happy EveryDay
strncpy Test:Happy
strcat Test:HappyHappy
strncat Test:HappyHappyHa
(二)比较函数
1. int strcmp(const char * s1, const char * s2)
2. int strncmp(const char * s1, const char * s2, size_t n) 比较字符串s1和s2的n个字符,结果同strcmp(不比较'\0'后的字符)
(三)查找函数
1. char * strchar(const char * s, int c)
2. char * strrchar(const char * s, int c)
3. char * strstr(const char * s1, const char * s2)
4. size_t strspn(const char * s1, const char * s2)
5. size_t strcspn(const char * s1, const char * s2)
6. char * strpbrk(const char * s1, const char * s2)
7. char * strtok(char * s1, const char * s2)
注意:strtok会修改输入的字符串,故请拷贝后再调用。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="This is a string";
char * tokenPtr;
tokenPtr=strtok(str, " ");
while(tokenPtr != NULL)
{
puts(tokenPtr);
tokenPtr=strtok(NULL," ");
}
return 0;
}
输出:
This
is
a
string
(四)内存函数
用来操作、比较和查询内存块,操作对象为”内存块“。
1. void * memcpy(void * s1, const void * s2, size_t n)
2. void * memmve(void * s1, const void * s2, size_t n)
3. int memcmp(const void * s1, const void * s2, size_t n) 比较内存区域s1和s2的前n个字节,<、=、>分别返回负值、0、正值。
4. void * memchr(const void * s, int c, size_t n)
5. void * memset(void * s, int c, size_t n)
示例:
int array[5] = {1,4,3,5,2}; for(int i = 0; i < 5; i++) cout<<array[i]<<" "; cout<<endl; memset(array,0,5*sizeof(int)); for(int k = 0; k < 5; k++) cout<<array[k]<<" "; cout<<endl; 输出的结果就是: 1 4 3 5 2 0 0 0 0 0
(五)其他函数
1. char * strerror(int errornum)
2. size_t strlen(const char * s)