C语言--------字符串函数(3)

简介: C语言--------字符串函数(3)

1.strstr函数功能及其实现

char* mystrstr(char* str1, char* str2)
{
  char* cp = str1;
  char* s1 = str1;
  char* s2 = str2;
  if (*str1 = '\0')
  {
    return str1;
  }
  while (*s1 && *s2 && *s1 == *s2)
  {
    s1++;
    s2++;
  }
  if (*s2 = '\0')
  {
    return cp;
  }
  cp++;
}
int main()
{
  char arr1[20] = "abfghhjkoljhgf";
  char arr2[] = "hjk";
  char* ret = mystrstr(arr1, arr2);
  if (ret != NULL)
  {
    printf("%s\n", ret);
  }
  else
  {
    printf("没找到\n");
  }
  return 0;
}

(1)这个函数的主要找到一个字符串在另外的一个字符串里面出现的位置;

(2)拿这里的两个字符串举例子,这个显然是让这个指针不断地向后移动,因为arr2是3个字符,

当第一个相同的时候就会进入循环,但是第二个字符就不相同了,这个时候的指针肯定要回到初始

的位置,所以我们定义了指针cp用来记录这个初始位置,当我们的s1发现不相同的时候,就会重新

返回cp的位置;

(3)循环条件里面要求s1s2解引用后不能是斜杠0,这样就可以当找到斜杠0的时候退出循环;

(4)当arr2指针找到斜杠0的时候,说明这个字符串啊已经找到了,就返回cp的位置就可以进行打

印了;

(5)自定义函数里的第一个if语句是当这个arr2是斜杠0的时候,直接返回str1的地址,打印arr1;

2.strtok函数功能

int main()
{
  char arr[40] = "nanlaibeiwang@wangxin@mayan.makui";
  char copy[40];
  strcpy(copy, arr);
  char* ret = NULL;
  char sep[] = "@@.";
  for (ret = strtok(copy, sep); ret != NULL; ret = strtok(NULL, sep))
  {
    printf("%s\n", ret);
  }
  return 0;
}

(1)这个函数主要是分割字符串,需要我们给出特殊的符号作为分割的位置;

(2)这个例子里面我们把”@@."作为分割位置,就可以分别打印分割后的4部分字符串;

(3)因为分割时进行修改,所以我们进行了拷贝,保留原来的字符串;

(4)这个函数在使用的时候,第一次给他字符串初始地址,他找到特殊的字符就会停下来了,然

后从第二次开始,我们就只用传递空指针,因为这个函数可以自己记住第一个特殊字符的位置,

然后第二次就直接从第一次的特殊字符处开始打印,以此类推;只要不是空指针就会一直进行

3.strerror函数功能

通过这个例子也可以看到,这个函数主要是把错误码转换成错误信息,方便程序员进行理解;

4.isupper,tolower,toupper函数

#include<string.h>
int main()
{
  char arr[20] = { 0 };
  gets(arr);
  char* p = arr;
  while (*p)
  {
    if (isupper(*p))
    {
      *p = tolower(*p);
    }
    p++;
  }
  printf("%s\n", arr);
  return 0;
}

isupper这个函数就是判断一串输入字符是否是大写的;

tolower,toupper是把大写转化为小写,或者是小写转化为大写;

这段代码实现的就是把输入的字符串转化为全小写的。

相关文章
|
2月前
|
安全 程序员 C语言
【C语言】字符串函数及其模拟实现
【C语言】字符串函数及其模拟实现
|
2月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
|
2月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
|
3月前
|
存储 缓存 C语言
【C语言】字符函数,字符串函数,内存函数
C语言中的字符串函数和内存函数
35 0
【C语言】字符函数,字符串函数,内存函数
|
4月前
|
C语言
【c语言】字符串函数的模拟实现(二)
【c语言】字符串函数的模拟实现(二)
20 1
|
4月前
|
C语言
【C语言】:10大字符串函数
【C语言】:10大字符串函数
23 1
|
4月前
|
编译器 C语言 C++
【C语言基础】:字符函数和字符串函数-2
【C语言基础】:字符函数和字符串函数
|
4月前
|
C语言
【C语言基础】:字符串函数(二)
【C语言基础】:字符串函数(二)
|
4月前
|
C语言
【C语言基础】:字符函数和字符串函数-1
【C语言基础】:字符函数和字符串函数
|
4月前
|
C语言
【C语言】【字符串函数】【超详解】【上】!!!
【C语言】【字符串函数】【超详解】【上】!!!
26 3