C篇 回忆string

初始化string

#include <stdio.h>

void main(void)
{
    char str1[6] = "hello"; //字符串数组会以\0结尾,需占一个字节
    char str2[6] = {'h', 'e', 'l', 'l', 'o'};
    char str3[] = "world";

    printf("%s", str1);
}

string数据存储
注意:
1、字符串初始化是存放于不可修改区域,当用数组进行初始化是获得了该数据的备份,存储于栈,可修改;用指针初始化获得指向改数据的地址,不能修改
2、字符串是以地址方式进行赋值,直接赋值运算需使用指针

#include <stdio.h>
void one();
void two();
void three();

int main(void)
{

    return 0;
}

void one()
{
    char str[] = "hello"; //数据存放于栈
    str[0] = "H";

    char *str = "hello";//数据存放于只读区
    *str = "H";
}

void two()
{
    char str[] = "hello";
    while(*str != '\0') {
        putchar(*str++); //str 本身为地址常量,++相当于左值运算
    }

    char *str = "hello";
    while(*str != '\0') {
        putchar(*str++);
    }
}

void three()
{
    char str[20];
    str = "nice"; //地址常量不允许赋值地址常量

    char *str;
    str = "nice";
}

string 追加函数 strcat

#include <stdio.h>
#include <string.h>

int main(void)
{
    char hello[7] = "hello ";
    char su[] = "su";

    printf("%s\n", strcat(hello, su));
}

string 字符查找方法 strchr

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "hello";
    char key;
    char *p = NULL;

    key = getchar();
    p = strchr(str, key);
    if(p == NULL) {
        printf("no find\n");
    } else {
        printf("%c\n", *p);
    }
    return 0;
}

string 字符串比较 strcmp

#include <stdio.h>
#include <string.h>

int main(void)
{
    char *str = "hello";
    char str1[] = "world";
    int res;

    res = strcmp(str, str1);
    printf("%d\n",  res);
    return 0;
}

string 字符串复制 strcpy

#include <stdio.h>
#include <string.h>

int main(void)
{
    char dest[6];
    char str[] = "hello";

    printf("%s", strcpy(dest, str));
    return 0;
}

string 判断字符串是否存在

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "hello c language";
    char *key = "lan";
    char *p = NULL;

    p = strstr(str, key);
    printf("%s", p);
    return 0;
}

string 字符串分割 strtok

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "hello#world#c#language";
    char *key = "#";
    char *p = NULL;
    // 将str按分隔符key截取第一个地址, strtok 内部会保存分割符后地址
    p = strtok(str, key);
    printf("%s\n", p);
    while( (p = strtok(NULL, key)) != NULL) {
        printf("%s\n", p);
    }
    /* p = strtok(NULL, key);
    printf("%s\n", p);
    p = strtok(NULL, key);
    printf("%s\n", p);
    p = strtok(NULL, key);
    printf("%s\n", p); */

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值