字符串

1、定义:由字符数组构成的,并且以’\0’作为结束符,用“”包围起来的若干个字符(字符使用单引号‘c’,字符串使用双引号“hello world”)
2、字符数组:数组中的每一个元素都是字符,没有’\0’
3、区别:字符数组不需要以\0结束,字符串必须以\0结束
4、初始化:数组形式字符串默认数一个指针常量,指针形式字符串默认是一个常量指针
1)使用数组形式:char str[] = {‘h’,’e’,’l’,’l’,’o’,’\0’}; 数组名str->指针常量
数组内容可以被修改:str[0] = ‘H’; //存储在栈区
2)用字符串初始化一个字符数组:char str[] = “hello”;(默认有’\0’)
数组名str->指针常量 //存储在栈区
3)使用指针创建:char *str = “hello”;(最常用)->字符串常量(),内容不能被修改
常量指针:str指向字符串首元素地址。可以改变指向:str++
//存储在常量区
3)使用malloc开辟空间后拷贝:
char str = (char )malloc(20); //存储在堆区
strcpy(str,”hello”); //可以改变字符串内容和指针指向—>普通指针
… //str中也包涵’\0’
free(str);
str = NULL;
字符串输出%s,遇到’\0’后结束,后面的字符不会输出
5、字符串的操作函数
strcpy(str1,str2) //复制拷贝字符串—字符串数组不能复制,需要每个元素一个一个的赋值
strcmp(str1,str2) //比较字符串
strlen(str) //求字符串长度(不包含’\0’
strcat(str1,str2) //追加字符串
6、字符串数组:数组中存储每个字符串的首地址
例: char* week[] = {“monday”,”tuesday”};
这里写图片描述

12、字符串“ajsdhfowr123456asdkfd”最长连续字符串;

#include <stdio.h>
#include<string.h>
char* lstr(char *str,char *longest);
int main(int argc, const char * argv[]) {

    char *str = (char*)"ajsdhfowr123456asdkfd";
    char longest[strlen(str)] ;
    longest[0] = '\0';

 //   printf("%ld",strlen(longest));

    lstr(str,longest);
    printf("最长连续字符串为:%s\n",longest);

    return 0;
}
char* lstr(char *str,char *longest)
{
    char temp[40] ;
    temp[0] = '\0';
    int i = 0;
    int j = 0;

    while(j < strlen(str))
    {
        if(j > 0 && ((str[j+1] == str[j] + 1) || (str[j] == str[j-1] + 1)))
        {
            temp[i] = str[j];
            i++;
        }        
        else
        {
            i = 0;
        }
        if(strlen(longest) < strlen(temp))
        {
            strcpy(longest,temp);
        }
        j++;
    }
    return longest;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值