【c语言】——字符串

岁酱吖の 提交于 2020-02-06 05:05:17

一提到字符串,想必大家对此表示十分亲切且熟悉了吧,字符串在我们的日常生活中处处可见,因此在程序里面其也占着举足轻重的地位,下面就让我们来了解了解它吧~

一、字符串的定义

1、含义
使用“ ”以‘\0‘结尾的一串字符。字符串的结尾标识为‘\0‘,只有用“ ”包括起来的都是字符串。
2、使用案例

字符串的错误定义
char arr[5] = {'a','b','c','d','e'};//没有'\0'
char crr[] = {'a','b','c','d','e'};
char drr[] = "ab\0cde"//打印出来ab,字符串中不能有'\0'
字符串的正确定义
char arr[5] = {'a','b','c','d'};//有'\0'
char frr[5] = "abcd";
char err[] = "abcde";
char *hrr = "abcde";

注意:后面两个的区别
在这里插入图片描述

二、字符串的有效长度

注意:strlen不包括’\0’,sizeof包括’\0’

求其sizeof 和 strlen
char str[100] = "abcde"; //100,5
char str2[] = "abcde";//6,5
char *str3 = "abcde";//4(指针的字节数都为4),5
char str4[100] = "abcdef\0gh";//100,6(字符串遇到'\0'则结束)
char *str6 = "abcdef\0gh";//4,6
char str5[] = "abcdef\0gh";//10(数组不管\0,因为0也可以存在数组里),6
char str4[] = "abcdef\n\0ghi"//12,7

总结:strlen是看字符串,不把\0计算进去。sizeof是计算所有字符

三、字符串的相关操作

1、字符串的拷贝

void Mystrcpy(char* des,char* src)
{
 while(*src != '\0')
 {
  *des = *src;
  des++;
  src++;
 }
 *des = '\0';
}

可以用一句话实现字符串的拷贝:*des++ = *src++
2、字符串的连接

void Mystrcat(char* des,char* src)
{
 while(*des != '\0')
 {
  des++;
 }
 while(*src != '\0')
 {
  *des = *src;
   des++;
   src++;
 }
 *des = '\0';
}

3、求字符串的长度

int Mystrlen(char *str)
{
 int temp = 0;
 while(*str != '\0')
 {
  temp++;
  str++;
 }
 return temp;
}

4、字符串的比较

int myStrCmp(char *str1, char *str2) {
      int m;
      int n;
  
      m = strlen(str1);
      n = strlen(str2);
  
      if (m == n) 
      {
          printf("same long\n");
      } 
      else if (m < n)
       {
          printf("str2 long\n");
      } 
      else
       {
          printf("str1 long\n");
      }
  }

6、输入一行字符,统计里面有几个单词

int words(const char* str)
{
    assert(str != NULL)
    if(str == NULL)
    {
        return 0;
    }
    int count = 0;
    while(*str != '\0')
    {
        if(isalpha(*str) && !isalpha(*(str+1)))
        {
            count ++;
            str++;
        }
    }
    return count;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!