<string.h>头文件中一些比较实用的函数,把这些函数功能利用好,以后再做字符串处理类型的题会给你多加一个buff,虽然有些不常见,但你要了解到有他的存在,说不定万一哪天就用上了帮了你大忙,下面是我总结的一些功能,欢迎参考。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 100
int main (void)
{
//strlen是求字符串长度的函数,以\0结束
char a[N]={'z','h','s','a','n','g','s','e','n'};
printf ("1、%d\n", strlen(a));
//strcpy是拷贝字符串的函数,注意;数组长度需要足够大,
//拷贝时连同\0一起拷贝
char b[N];
//strcpy(b, a);//拷贝时目标数组在前,被拷贝的数组在后
strncpy(b, a, 5);//也可以拷贝一部分字符串但是函数需变为strncpy,比如说拷前5个字符
puts(b);
//strcat是拼接字符串的函数,两串均以\0结束,连接后串1的\0取消,新串后加\0
char c[N]="张森你是这个世界上";
char d[N]="最帅的男人!!!";
strcat(c, d);
puts(c);//依旧是目标字符串在前,接串的在后
puts(d);
//stscasecmp是忽略大小写,来比较字符串的函数
char e[N]={'z','h','a','n','g','k','a','i'};
// printf ("2、%d\n", strscasecmp(a, e));
//strcmp是比较两个字符串大小的函数
printf ("3、%d\n", strcmp(a,e));
//如果a大结果大于零,字符串相同结果为零,a小则结果小于零
//strncmp函数是比较两个字符串前n位
printf ("4、%d\n", strncmp(a, e, 5));//相同返回零
//比较规则:从左到右逐个字符进行比较,直到出现不同的字符或\0为止
//如果出现不同的字符,则对第一次出现不同的字符进行比较,比较方法是以a的第一个
//不同的字符减去e的第一个不同字符以所得差值作为返回值(大于0返回1,小于0返回-1)
//strchr函数是字符串中查找指定字符,找到的是这个字符在字符串中的地址
char ch='n';
printf ("5、%p %p\n", ch, strchr(a, ch));
printf ("6、%p %p\n", ch, strrchr(a, ch));//如果字符串中有两个指定字符,strrchr是反向查找
//如果想获得该字符的下标,可以用字符串的地址减去字符的地址
printf ("7、%d\n", strchr(a, ch)-a);
printf ("8、%d\n", strrchr(a, ch)-a);
//strstr是在字符串中查找字符串的函数,该函数查找到的结果也是一个地址
char s[N]="How are you";
char s1[N]="are";
printf ("9、%p\n", strstr(s, s1));
printf ("10、%d\n", strstr(s, s1)-s);
/*isalpha是检查是否为字母字符的函数
isupper是判断是否为大写字母的函数
islower是判断是否为小写字母的函数
isdigit是判断是否为数字的函数
这几个函数需要加上头文件#include<ctype.h>
*/
char ch1;
int count1=0, count2=0, count3=0;
while ((ch1=getchar()) !='\n')
{
if( isalpha(ch1) )
{
if( isupper(ch1) )
count1++;
if( islower(ch1) )
count2++;
}
if( isdigit(ch1) )
count3++;
}
printf ("大写字母:%d\n小写字母:%d\n阿拉伯数字:%d\n", count1, count2, count3);
//还可以利用这几个函数进行大小写转换,谨记转换和判断不同,判断加is,转换加to
char ch2;
while ((ch2=getchar()) !=EOF)
{
if( isalpha(ch2) )
{
if( isupper(ch2) )
ch2=tolower(ch2);
if( islower(ch2) )
ch2=toupper(ch2);
}
printf ("%c", ch2);
}
}/*以下是各函数应用的输出结果:
1、9
zhsan
张森你是这个世界上最帅的男人!!!
最帅的男人!!!
3、1
4、1
5、000000000000006E 000000000062FB24
6、000000000000006E 000000000062FB28
7、4
8、8
9、000000000062FD54
10、4
*/