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

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类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值