补.从零开始学习C语言--C风格字符串

来源:互联网 发布:matlab有mac版付费吗 编辑:程序博客网 时间:2024/05/07 09:02
C语言中,没有string这种类型,C中字符串是被当做一种特殊的数组来处理的,一个以0结尾的字符数组:

chars[5]="abcd"; //字符串以"\0"结尾 ,注意这里数组的长度是5,而不是4!

"\0"表示0 是一个转义字符

例子:

chars1[38]="www.yjxsoft";

 char s2[]=".com";

 请编写一段代码,把字符串s2追加到s1后边

 使printf("%s\n",s1);打印结果为 www.yjxsoft.com

#include <stdio.h>int main(void){char s1[38]="www.yjxsoft";char s2[]=".com";int i,j;i=j=0;//while(s1[++i]);////while (s2[j])//{//s1[i++]=s2[j++]; //}for(i; s1[i] != 0; i++){}for(j; s2[j] != 0; j++){s1[i++] = s2[j];}printf("%s \n",s1);getchar();getchar();return 0;}


C风格字符串处理函数:

需掌握函数

strlen(char *a)

计算字符串长度

char*a  strcat(char *a,  char *b)

连接两个字符串

char*a  strncat(char *a, char *b , int n)

把串b前边的n个字符直接连接到a后边

extern int strcmp(const char *s1,const char *s2)

比较字符串s1和s2

当s1<s2时,返回值< 0

当s1==s2时,返回值= 0

当s1>s2时,返回值> 0

extern int strncmp(const char *s1,const char *s2, int maxten)

比较字符串str1和str2的前maxlen个字符

 

extern int stricmp(const char *s1,const char *s2)

比较字符串s1和s2,但不区分字母的大小写

extern int strincmp(const char *s1,const char *s2, int maxten)

比较字符串str1和str2的前maxlen个字符

, 但不区分字母的大小写

char* strchr(char *str, char c)

在一个字符串中查找给定字符的第一个匹配之处

printf("%s\n",strchr("abcdef123",'c')); 结果显示为:cdef123

char* strstr(char *str1, char *str2)

在一个字符串中查找给定字符串的第一个匹配之处

printf("%s\n",strstr("abcdef123","12")); 结果显示为:123

extern char *strcpy(char* dest, const char *src);

把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

需理解的函数

int strspn(char *str1, char *str2)

返回一个str2字符集中第一次不在str1中出现的字符下标位置

int strcspn(char *str1, char *str2)

返回一个str2字符集中第一次在str1中出现的字符下标位置

char* strrchr(char *str, char c)

在一个字符串中查找给定字符的最后一个匹配之处

printf("%s\n",strrchr("1cdccc1def123d",'1'));   结果为123d

char* strpbrk(char *str1, char *str2)

在串中查找str2字符集中的字符 ,返回第一个位置处的字串

char*srt1 strtok(char *str1, const char *str2)

查找由在第二个串中指定的分界符分隔开的单词,,返回第一个位置处的字串

 

C风格字符串转换和判断函数:

 需添加#include<ctype.h>

函数名

功能

islower

测试是否小写字母,         是返回非零,否则返回零.

isupper

测试是否大写字母,         是返回非零,否则返回零.

isalpha

测试是否字母,           是返回非零,否则返回零.

isalnum

测试是否数字,           是返回非零,否则返回零.

iscntrl

测试是否控制字符,       是返回非零,否则返回零.

isprint

测试是否可打印字符,     是返回非零,否则返回零.

isgraph

测试是否  可打印字符,不含空格,是返回非零,否则返回零.

isdigit

测试是否十进制字符 '0'~'9',是返回非零,否则返回零.

isxdigit

测试是否十六进制字符 '0'~'9'’a’~’f’,’A’~’F’是返回非零,否则返回零.

isblank

测试是否标准空白字符,    是返回非零,否则返回零.

isspace

测试是否空白字符,        是返回非零,否则返回零.

ispunct

测试是否  标点符号,       是返回非零,否则返回零.

 

转换大小写 需添加#include<ctype.h>

toupper

将小写 转换成大写 如果不是字符 返回原值

tolower

将大写 转换成小写 如果不是字符 返回原值

 

字符串转换成数值 需要添加#include<stdlib.h>

需掌握函数

atof

从字符串转换成double类型

atoi

从字符串转换成 int 类型

atol

从字符串转换成 long 类型 (long和int类型的取值范围一样)

atoll

从字符串转换成 long long类型

 

原创粉丝点击