目录
2.字符串的复制操作(strcpy、strncpy、sprintf、memcpy、strdup)
4.字符串比较(strcmp、strncmp、strcasecmp、strcasencmp)
5.字符串查找函数(strpbrk、strstr、strrchr)
6. 字符串转换函数(atoi、atol、strtol、strtoul、atof、strtod、ecvt、fcvt、gcvt、itoa、ltoa、ultoa)
字符串的打印与读取
gets和fgets
//gets 不安全的函数,vs默认报错
//fgets
//char *fgets(char *s, int size, FILE*stream);
/* fgets从stream中读取最多size-1大小的内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,fgets会在所读取的内容后面添加'\0',这样,fgets读取的内容中会包括行末尾的'\n'字符。如果要获取读取字符串的长度,可以调用strlen函数获得。*/
#include <stdio.h>
#include <string.h>
#define SIZE 50
int main()
{
char buf[SIZE] = "0";
while (fgets(buf, SIZE, stdin)) {
puts(buf);
}
return 0;
}
字符操作函数
单字节字符处理函数在ctype.h(C++的cctype)中声明。宽字节字符处理函数在wctype.h(C++的cwctype)中声明.
实现一个输入一串字符,分别计算字符串中英文字母,数字、字符的个数,并将所有的英文字母转换为大写母
字符串操作函数
1.字符串的长度计算(sizeof)
2.字符串的复制操作(strcpy、strncpy、sprintf、memcpy、strdup)
strcpy
strcpy返回的是dest的地址 所以上述代码也可以改为
strncpy函数
strcpy是不安全的函数,一般要使用strncpy, strncpy比strcpy多传入一个参数n,表示复制前n个字符。
strdup和_strdup
_strdup是 windows编译
strdup是linux编译
要注意的是此类函数是调用malloc在堆上申请一块空间,所以用完记得释放,不然会造成内存泄漏
3.字符串连接函数(strcat、sprintf)
strcat和sprintf两者都可以实现字符串拼接 不过要注意申请字符数组的大小
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "hello";
char str2[] = "world";
sprintf(str1, "%s%s", str1, str2);
//printf("strcat = %s\n", strcat(str1, str2));两者都可以实现字符串拼接
printf("str1 = %s\n", str1);
return 0;
}
4.字符串比较(strcmp、strncmp、strcasecmp、strcasencmp)
strcmp和strncmp
strcmp按照ASCII码大小进行比较,若buf1大于buf2,strcmp(buf1,buf2)返回正整数,小于返回负整数,等于则返回0
所有的字符比较规则都依照ASCII码,例如空格的ASCII是32
strcasecmp和strncasecmp
这两个函数是指忽略大小写的比较,不过只能在linux使用
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Hello";
char str2[] = "hello";
char str3[] = "Hellp";
printf("strcasecmp = %d\n", strcasecmp(str1, str2));
printf("strcasecmp = %d\n", strcasecmp(str2, str3));
printf("strncasecmp = %d\n", strncmp(str1, str3, 4));
return 0;
}
5.字符串查找函数(strpbrk、strstr、strrchr)
strpbrk是搜索s1字符串,搜索的内容是s2中任意第一个出现字符。返回时s1中最先出现的位置
strstr是搜索s1字符串,搜索的内容是s2整个字符串。返回时s1中最后出现的位置
strrchr是搜索s1字符串,搜索内容是指定的字符,返回时s1中最后出现的位置
6. 字符串转换函数(atoi、atol、strtol、strtoul、atof、strtod、ecvt、fcvt、gcvt、itoa、ltoa、ultoa)
依照名字可以看出这些函数的用法,下面列举几个需要注意的
strtol和 strtonl可以使用第三个参数转换成自己想要的进制(十进制二进制八进制都可以)