搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 安卓情报局 > C语言基础及指针⑤动态内存分配

C语言基础及指针⑤动态内存分配

安卓情报局 2018-03-23


C语言基础及指针⑤动态内存分配


接续上篇C语言基础及指针动态内存分配

字符操作 是我们写程序时 最常用的一种操作 例如:字符串截取 字符串替换 字符串转整数类型等等 都是字符操作 javaString类就是二三十个方法 还有StringBuffer , StringBuilder等辅助类 下面 ,我们就来看看C语言中字符处理的函数 。

一. 字符数组

// 字符数组

void charArray() {


    // 字符数组 , 可以修改

    char c[15] = { 'y','e','s',' ','m','a','n' };

    // 字符数组可以直接作为字符串输出

    printf("%s\n", c);


    // 修改

    c[0] = 'a';


    printf("修改字符:%s\n", c);


}


字符数组 本身是一个数组 但是也可以作为字符串格式化输出 可以任意替换里面的字符 和操作数组是一样的


二. 字符指针

/*字符指针*/

void charPointer() {

    // 内存连续排列 , 不可修改

    char* s = "Never give up";



    printf("-------------------------------\n截取字符\n");

    // 截取字符

    s += 6;

    while (*s)

    {

        printf("%c", *s);

        s++;

    }

}

字符指针与字符数组 最大的区别是一个定义了就不可以修改 一个可以任意修改里面的字符 就和StringStringBuilder一样 String定义了就无法增加或修改里面的内容 , 一个是可以增加和修改里面的内容 。

下面就列举几个常用的操作:


拼接字符串

/*拼接函数*/

void spliceString() {

    // 合并后存储字符的容器

    char dest[40] = {'h','e','h','e',' '};


    char* c1 = "Never give up ";


    char* c2 = "I blive you ! ";


    // 会清除字符数组原有的数据

    //strcpy(dest, c1);

    strcat(dest, c1);

    strcat(dest, c2);


    printf("\n拼接字符串:\n%s\n", dest);


}

查找单个字符


/*查找单个字符*/

void searchChar() {

    char* str = "I wanna dont kiss you";

    char* p = strchr(str, 'd');


    if (p) {

        printf("索引位置:%d\n", p - str);

        printf("打印: ");

        str += p - str;

        while (*str)

        {

            printf("%c",*str);

            str++;

        }

        printf("\n");

    }

    else {

        printf("没有找到\n");

    }

}



C语言基础及指针⑤动态内存分配


查找字符串

/*查找字符串*/

void sreachChars() {

    char* str = "落花有意流水无情";

    char* handle = "";


    char* p = strstr(str, handle);


    if (*p) {

        printf("索引位置:%d\n", p - str);

        printf("打印: ");

        str += p - str;

        printf("%s ---- %s\n", str,p);

    }

    else {

        printf("没找到\n");

    }

}

字符转换

/*字符转换int*/

void strToInt() {

    char* p = "123";

    int toInt = atoi(p);

    int res = toInt + 123;

    printf("字符转换int数值: %d\n", res);

}

字符转换函数定义:

/-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

//

// Narrow String to Number Conversions

//

//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

_Check_return_                    _ACRTIMP double    __cdecl atof   (_In_z_ char const* _String);

_Check_return_ _CRT_JIT_INTRINSIC _ACRTIMP int       __cdecl atoi   (_In_z_ char const* _String);

_Check_return_                    _ACRTIMP long      __cdecl atol   (_In_z_ char const* _String);

_Check_return_                    _ACRTIMP long long __cdecl atoll  (_In_z_ char const* _String);

_Check_return_                    _ACRTIMP __int64   __cdecl _atoi64(_In_z_ char const* _String);


_Check_return_ _ACRTIMP double    __cdecl _atof_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);

_Check_return_ _ACRTIMP int       __cdecl _atoi_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);

_Check_return_ _ACRTIMP long      __cdecl _atol_l  (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);

_Check_return_ _ACRTIMP long long __cdecl _atoll_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);

_Check_return_ _ACRTIMP __int64   __cdecl _atoi64_l(_In_z_ char const* _String, _In_opt_ _locale_t _Locale);


_Check_return_ _ACRTIMP int __cdecl _atoflt (_Out_ _CRT_FLOAT*  _Result, _In_z_ char const* _String);

_Check_return_ _ACRTIMP int __cdecl _atodbl (_Out_ _CRT_DOUBLE* _Result, _In_z_ char*       _String);

_

C语言中的字符操作函数也比较多 , 这里列举几个常用的 , 其他的可以去字符串函数网址查询 都有例子








版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《C语言基础及指针⑤动态内存分配》的版权归原作者「安卓情报局」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注安卓情报局微信公众号

安卓情报局微信公众号:AndroidCIA

安卓情报局

手机扫描上方二维码即可关注安卓情报局微信公众号

安卓情报局最新文章

精品公众号随机推荐