String.h库
string.h 头定义了一个变量的类型,操作字符数组的一个宏观和各种功能。
库变量
以下是在头string.h中定义的变量类型:
S.N. 变量和说明
1 size_t
这是一个无符号整数类型的sizeof关键字的结果。
库宏
以下是在头string.h中定义的宏:
S.N. 宏观与说明
1 NULL
这个宏是一个空指针常量的值。
库函数
*以下是头string.h中定义的功能:*
S.N. 函数及说明
1.void *memchr(const void *str, int c, size_t n)
搜索第一次出现的字符c(unsigned char类型)的前n个字节的字符串参数str指向。
2 int memcmp(const void *str1, const void *str2, size_t n)
比较str1和str2的前n个字节。
3 void *memcpy(void *dest, const void *src, size_t n)
从src复制n个字符到dest。
4 void *memmove(void *dest, const void *src, size_t n)
另一个函数来复制n个字符到str1。
5 void *memset(void *str, int c, size_t n)
复制字符c(unsigned char类型)的前n个字符的字符串参数str指向。
6 char *strcat(char *dest, const char *src)
追加src指向的字符串到dest指向的字符串的结束。
7 char *strncat(char *dest, const char *src, size_t n)
追加src指向字符串结尾的字符串指向dest中最多n个字符长。
8 char *strchr(const char *str, int c)
搜索第一次出现的字符串中的字符c(unsigned char类型)参数str指向。
9 int strcmp(const char *str1, const char *str2)
比较字符串str1指向指向的字符串str2。
10 int strncmp(const char *str1, const char *str2, size_t n)
str1和str2的前n个字节相比。
11 int strcoll(const char *str1, const char *str2)
比较字符串str1的STR2。其结果是依赖于位置LC_COLLATE设置。
12 char *strcpy(char *dest, const char *src)
复制字符串src指向到dest。
13 char *strncpy(char *dest, const char *src, size_t n)
副本最多n个字符的字符串src指向到dest。
14 size_t strcspn(const char *str1, const char *str2)
计算str1的起始段的长度完全包含在str2中的字符。
15 char *strerror(int errnum)
搜索一个内部数组的错误编号差错编号,并返回一个指向一个错误消息字符串。
16 size_t strlen(const char *str)
计算但不包括终止空字符的字符串str的长度。
17 char *strpbrk(const char *str1, const char *str2)
查找字符串str1在str2中指定的任何字符相匹配的第一个字符。
18 char *strrchr(const char *str, int c)
参数str指向的字符串中的字符c(unsigned char类型)最后一次出现的搜索。
19 size_t strspn(const char *str1, const char *str2)
计算str1中的初始段完全包含在str2中的字符的长度。
20 char *strstr(const char *haystack, const char *needle)
查找第一次出现的整个字符串针(不包括终止空字符)出现在字符串haystack中。
21 char *strtok(char *str, const char *delim)
中断字符串str分隔分离成一系列的记号。
22 size_t strxfrm(char *dest, const char *src, size_t n)
转换前n个字符的字符串src到校报的语言环境和将它们放置字符串dest。
字符串比较的一道题
/*关于字符串比较:
编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2在s1中未出现,则返回0。例如:
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find
#include<stdio.h>
#include<string.h>
int fun(char *s1,char *s2)
{
}
int main()
{ char a[80],b[80];
int n;
printf("Please input the first string:");
gets(a);
printf("Please input the second string:");
gets(b);
n=fun(a,b);
if(n==0)
printf("No find\n");
else printf("n=%d\n",n);
return 0;
}*/
#include<stdio.h>
#include<string.h>
int fun(char *s1, char *s2)
{
int strlenth(char *);
//int alen = strlenth(s1);先弄错了,自己构造的函数
//int blen = strlenth(s2);
int alen = strlen(s1);
int blen = strlen(s2);
int n = 0;
for (int i = 0; i<alen - blen+1; i++)
{
int f = 0;
for (int j = i, k = 0; k<blen; k++, j++)
if (s1[j]== s2[k] )
{
f++;
};
if (f == blen) n++;
}
return n;
}
/*int strlenth(char *q)
{
int i = 0,sum;
while(q[i] != '\0')
{
i++;
sum = i;
}
//printf("长度:%d", sum);
return sum;
}*/
int main()
{
char a[80], b[80];
int n;
printf("Please input the first string:");
gets_s(a);
printf("Please input the second string:");
gets_s(b);
n = fun(a, b);
if (n == 0)
printf("No find\n");
else printf("n=%d\n", n);
return 0;
}
总结:c语言存在库函数<string.h>
我觉得常用的:strlen函数来确定字符串长度。
strcpy函数复制后面的去前面的地址,