[JNI] 开发基础(6)字符串相关操作

撸代码时候字符串和数组是我们最常见的数据类型,要熟练使用c语言编程,字符串操作也要相当的熟练,这里介绍一些常见的字符串操作方法,不够完整,如果用到其他的方法可以查询 c语言字符串函数API

strchr :
功能:查找字符串s中首次出现字符c的位置

说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。

void main(){
    char *str = "this is string";
    //查询i元素
    char *p =strchr(str,'i');
    if(p){
        printf("索引位置 %d\n",p);
    }else{
        printf("没有找到");
    }
    getchar();
}

strstr:

功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。

说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

与strchr有点类似,一个是找字符,一个是找字符串。

    void main(){
        char * str= "welcome to beijing";
        char * needle = "to";
        char *p;
        p= strstr(str,needle);
        if(p){
            printf("索引位置 %d\n",p);
        }else{
            printf("没有找到");
        }
        getchar();
    }

strcmp:

功能:比较字符串s1和s2。忽略大小写

说明:

    当s1<s2时,返回值<0
    当s1=s2时,返回值=0
    当s1>s2时,返回值>0
void main(){
    char *str1 = "abcd";
    char *str2 = "ABCD";
    int result = strcmp(str1,str2);
    if(result<0){
        printf("str1 小于 str2");
    }else if(result == 0){
        printf("str1 等于 str2");
    }else{
        printf("str1 大于 str2");
    }
    getchar();
}

strupr:
功能:将字符串s转换为大写形式

说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针。


void mystrlwr(char str[],int len){
    int i =0;
    for(;i<len;i++){
        //在A-Z字母转为小写只需+32('a'-'A')
        if(str[i]>='A'&&str[i]<='a'){
            str[i] = str[i] - 'A' + 'a';
        }
    }
}

void main(){
    char * str= "this is string";
    char * p = strupr(str);
    printf("转为大写:%s\n",p);

    //转小写strlwr
    mystrlwr()
    getchar();

}

strtod

功能:将字符串s转换为double
说明:strtod(str,p)从字符串 str中转换 double 类型数值,并将后续的字符串指针存储到 p 指向的 char* 类型存储。

void main(){
    char *str= "99ab77";
    char *p;
    double value;
    value = strtod(str,&p);
    printf("value = %l\n",value);
    printf("p地址 %#x\n",p);
    getchar();
}

strrev:

功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。

说明:返回指向颠倒顺序后的字符串指针。

 void main(){
    char *str ="this is string";
    char *p;
    p = strrev(str);
    print("%s\n",p);
    getchar();
 }

strset:
功能:把字符串s中的所有字符都设置成字符c。

说明:返回指向s的指针。

   void main()
      {
        char *s="Golden Global View";
        strset(s,'G');
        printf("%s",s);
        getchar();
      }

strpbrk

功能:在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内。

说明:返回指向s1中第一个相匹配的字符的指针,如果没有匹配字符则返回空指针NULL。

void main()
      {
        char *s1="Welcome To Beijing";
        char *s2="BIT";
        char *p;

        p=strpbrk(s1,s2);
        if(p){
          printf("%s\n",p);
          }
        else{
          printf("Not Found!\n");
          }

        p=strpbrk(s1, "Da");
        if(p){
          printf("%s",p);
          }
        else{
          printf("Not Found!");
          }

        getchar();
      }

字符串API方法还有很多,不一一列举,查询string api进行练习,熟悉了这么多,写一个实例:删除字符串中指定的字符

//删除字符串中指定的字符
void delchr(char *str,char del){
    char *p = str;
    while(*str!='\0'){
        if(*str!=del){
            *p++ = *str;
        }
        str++;
    }
    *p='\0';
}

void main(){
    char *str="this is string";
    printf("%s\n",str);
    delchr(str,'r');
    printf("%s\n",str);
    getchar
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值