L1-070 吃火锅
参考了一下网上的代码,学到了三种字符串函数:
1.strncmp(const char* str1, const char* str2, int num)
若在规定长度 n 内两个字符串相同,返回 0 ;否则比较第一个不同位置上的字符的ASCII码,返回 - 1 , 或 1 。
2.strcmp(const char* str1, const char* str2)
如果返回值小于 0,则表示 str1 小于 str2。如果返回值大于 0,则表示 str1 大于 str2。如果返回值等于 0,则表示 str1 等于 str2。
样例:
char arr1[] = {"abcde"};
char arr2[] = {"abcde"};
int ret = strcmp(arr1, arr2);
printf("%d", ret);
3.strstr(const char *haystack, const char *needle)
其中,haystack是要被检索的C字符串,needle是在haystack字符串内要搜索的小字符串1。如果在haystack中找到了needle,该函数返回指向haystack中第一次出现needle的位置的指针;如果未找到,则返回NULL。
样例1:输出子串
const char haystack[20] = "RUNOOB";
const char needle[10] = "NOOB";
// 调用strstr函数查找needle在haystack中的位置
char *ret;
ret = strstr(haystack, needle);
printf("子字符串是: %s\n", ret);
输出:
子字符串 ret 是: NOOB
样例2:替换子串
char str[] = "This is a simple string";
char *pch;
// 调用strstr函数查找"simple"在str中的位置
pch = strstr(str, "simple");
// 如果找到了,就用"sample"替换"simple"
if (pch != NULL)
strncpy(pch, "sample", 6);
puts(str);
输出:
This is a sample string
样例3:使用strstr函数和一个循环计数器统计一个字符串在另一个字符串中出现的次数
char a1[1001], a2[1001];
scanf("%s %s", a1, a2);
// 定义一个指针和一个计数器
char *p;
int k = 0;
// 调用strstr函数循环查找a2在a1中出现的次数
p = a1;
while ((p = strstr(p, a2)) != NULL)
{
k++;
p++;
}
printf("%d", k);
输出:
5