Android_NDK C字符串基本操作(D4)

本文详细介绍了在Android NDK环境下进行字符串的基本操作,包括计算长度、类型转换(整型、浮点型、双精度型)、比较、查找、复制、拼接、截取和大小写转换。同时,还展示了如何实现字符串替换的方法。这些基础知识对于Android原生开发至关重要。

Android_NDK C字符串基本操作

字符串长度

void main(){
    char arr[] = {'a','a','a','a','a','\0'};
    printf("%s",arr);
}

字符串结尾是\0,也就是字符串长度数据要比数组长度少1。

void main(){
    char *str = "aaaaaa";
    printf("%s",str);
}

和上面的区别就是下面的不能修改。

void main(){
    char *str = "aaaaaa";
    printf("%d",strlen(str));
}

使用strlen方法获取字符串长度。

字符串类型转换为别的类型

整型
void main(){
    char *str = "15";
    int num = atoi(str);//如果转换失败返回0,如果数字后有其他不是数字的,会剔除
}
Float
void main(){
    char *str = "15.0";
    float num = atof(str);//如果转换失败返回0.0000000,如果数字后有其他不是数字的,会剔除
}
Double
void main(){
    char *str = "15.0";
    double num = atotod(str,NULL);//如果转换失败返回0.0000000,如果数字后有其他不是数字的,会剔除
}

字符串比较

void main(){
    char *str = "Darren";
    char *str1 = "darren";

    int re = strcmp(str,str1);//返回0就是相等。区分大小写
    int re1 = strcasecmp(str,str1);//不区分大小写
    int re2 = strncmp(str,str1,5);//比较前5个字符是否相等
}

字符串查找拼接

查找
void main(){
    char *str = "Darren";
    char *str1 = "ren";

    char *re = strstr(str,str1);//返回第一次出现的位置(位置指针),没找到返回NULL
    int pos = re - str;//通过指针操作找到位置
    int contains = *re == NULL;//通过返回指针是否为空,判断是否包含。

}
copy
void main(){
    char *str = "Darren";
    char cpy[20];

    strcpy(cpy,str);
}
拼接
void main(){
    char *str = "Darren";
    char *st1 = " is";
    char cpy[20];
    strcpy(cpy,str);
    strcat(cpy,st1);
}
截取
char * substr(char* str,int start,int end){
    //最好不要用malloc
    int len = end-start+1;
    char res[len];
    int i = 0;
    for(;i<len;i++){
        res[i] = str[i+start];
    }
    res[len-1]='\0';
    return res;
}

void main(){
    char *str = "Darren is";
    char *sub = substr(str,3,5);
}

大小写转换

void toLower(char * dest ,char * origin){
    while(*origin != '\0'){
        *dest = tolower(*origin);
        dest++;
        origin++;
    }
    *dest = '\0';
}

void main(){
    char *str = "Darren";
    char stres[20];
    toLower(stres,str);
}

字符串替换

char * str_replace(char * str,char * or,char * re){
    char * pos = strstr(str,or);
    if(!pos){
        return str;
    }
    int newStrLen = strlen(str) - strlen(or) + strlen(re);
    char res[newStrLen];
    char * start = substr(str,0,pos-str);
    char * end = substr(str,pos+strlen(or),strlen(str));
    strcpy(res,start);
    strcat(res,re);
    strcat(res,end);
    return str_replace(res,or,re);
}

void main(){
    char *str = "aabbccaabbaabb";
    char *res = str_replace(str,"aa","ddd");
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值