zoukankan      html  css  js  c++  java
  • 字符串

    //
    //  main.c
    //  字符串
    //
    //  Created by zhangxueming on 15/6/5.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    #include <ctype.h>
    
    //字符操作函数
    //int     isalnum(int);
    //int     isalpha(int);
    //int     isdigit(int);
    //int     isgraph(int);
    //int     islower(int);
    //int     isupper(int);
    //int     isxdigit(int);
    //int     tolower(int);
    //int     toupper(int);
    //int     digittoint(int);
    //int     ishexnumber(int);//等同于 isxdigit
    //int     isnumber(int);//等同于 isdigit
    
    //int main(int argc, const char * argv[]) {
    //    
    //    printf("isalnum = %d
    ", isalnum('a'));//判断是否为字母或者数字字符
    //    printf("isalpha = %d
    ", isalpha('A'));//判断是否为英文字母字符
    //    printf("isdigit = %d
    ", isdigit('8'));//判断是否为十进制数字字符
    //    printf("isgraph = %d
    ", isgraph('	'));//判断是否为可见字符
    //    printf("islower = %d
    ", islower('a'));//判断是否为小写字母
    //    printf("isupper = %d
    ", isupper('A'));//判断是否为大写字母
    //    printf("isxdigit = %d
    ", isxdigit('F'));//判断是否为十六进制字符
    //    printf("tolower = %c
    ", tolower('A'));//把大写字母转换成小写字母
    //    printf("toupper = %c
    ", toupper('a'));//把小写字母转换成大写字母
    //    printf("digittoint = %d
    ", digittoint('f'));//把十六进制字符转换成整型
    //    return 0;
    //}
    
    //字符串
    //"hello world"
    //1.字符串中的每一个字符占1个字节
    //2.字符串必须用""包含
    //3.字符串的末尾必须要有''
    //4.打印字符串用%s占位符,只需要传递字符串的首地址
    //5.字符串可以用字符数组存储或者存储在堆内存中
    
    //int main(int argc,const char *argv[])
    //{
    //    char str[]="hello world";//省约数组的长度 必须初始化数组
    //    printf("size = %lu
    ", sizeof(str));
    //    printf("%s
    ", str);
    //    return 0;
    //}
    
    //int main(int argc, const char *argv[])
    //{
    //    char str1[]="hello world";
    //    char *str2 ="hello world";
    //    
    //    str1[5]='A';
    //    //*(str2+5) = 'A';//str2指针指向字符串常量, 不能修改字符串常量
    //    printf("str1 = %s
    ", str1);
    //    printf("str2 = %s
    ", str2);
    //    return 0;
    //}
    
    //字符串的长度(字符串的有效长度,有效长度不包含'')
    //"hello world"
    
    #include <string.h>
    
    //unsigned long <==> size_t
    //size_t strlen(const char *src);
    
    size_t mystrlen(const char *src)
    {
        int i=0;
        while (src[i]) {
            i++;
        }
        return i;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char str1[]="hello world";
    //    
    //    printf("size = %lu
    ", sizeof(str1));
    //    
    //    printf("length = %lu
    ", mystrlen(str1));
    //    
    //    return 0;
    //}
    
    //字符串拷贝函数
    //char    *strcpy(char *dest, const char *src);
    //注意:dest指针指向的内存空间足够容纳src字符串
    //char    *strncpy(char *dest, const char *src, size_t n);
    //dest:目的缓冲区
    //src: 源字符串
    //n: 最多拷贝的字符个数
    
    char *mystrcpy(char *dest, const char *src)
    {
        int i=0;
        while (src[i]) {
            dest[i]=src[i];
            i++;
        }
        dest[i]='';
        return dest;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char *str1="hello worldqianfeng";
    //    char str2[100]={};
    //    
    //    //printf("str2 = %s
    ",mystrcpy(str2, str1));
    //    //printf("str2 = %s
    ", str2);
    //    printf("str2 = %s
    ", strncpy(str2, str1, 100));
    //    return 0;
    //}
    
    //字符查找函数
    //strchr 正序查找字符, 返回在字符在源字符串中第一次出现的位置(地址)
    //char    *strchr(const char *src, int c);
    //strrchr 倒序查找字符, 返回在字符在源字符串中第一次出现的位置(地址)
    //char    *strrchr(const char *src, int c);
    
    char *mystrchr(const char *src, char ch)
    {
        int i=0;
        while (*(src+i)) {
            if (*(src+i)==ch) {
                return (char *)(src+i);
            }
            i++;
        }
        return NULL;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char *str="hello world";
    //    
    //    printf("%s
    ", mystrchr(str, 'o'));
    //    
    //    printf("%s
    ", strrchr(str, 'o'));
    //    return 0;
    //}
    
    //字符串比较函数
    //strcmp
    //int     strcmp(const char *, const char *);
    //strncmp
    //int     strncmp(const char *s1, const char *s2, size_t n);
    //n: 最大比较字符个数
    
    //ret > 0   str1 > str2
    //ret < 0   str1 < str2
    //ret ==0   str1 == str2
    
    int mystrcmp(const char *str1, const char *str2)
    {
        int i=0;
        while (str1[i] && str2[i] && str1[i]==str2[i]) {
            i++;
        }
        return str1[i]-str2[i];
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char *str1="hello world";
    //    char *str2="hello world";
    //    
    //    printf("ret = %d
    ", mystrcmp(str1, str2));
    //    
    //    printf("ret = %d
    ", strncmp(str1, str2, 20));
    //    return 0;
    //}
    
    
    //字符串拼接函数
    //strcat
    //char    *strcat(char *s1, const char *s2);
    //strncat
    //char    *strncat(char *s1, const char *s2, size_t n);
    //n: 最多可以往s1中拷贝的字符个数
    
    char *mystrcat(char *s1, const char *s2)
    {
        int len = (int)strlen(s1);
        int i=0;
        while (*(s2+i)) {
            *(s1+len+i)=*(s2+i);
            i++;
        }
        *(s1+len+i) = '';
        return s1;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    char str1[100]="helloworld";
    //    char str2[]="qianfeng";
    //    
    //    str1[18]='#';
    //    
    ////    printf("str = %s
    ", mystrcat(str1, str2));
    ////    
    ////    printf("char = %c", str1[18]);
    //
    //    printf("str = %s", strncat(str1, str2, 89));
    //    
    //    return 0;
    //}
    //
    
    //字符串分割函数
    //strtok
    //char    *strtok(char *src, const char *demi);
    //src : 被分割的字符串
    //demi: 分割符字符串 一定要用双引号包含
    
    //int main(int argc,const char *argv[])
    //{
    //    char str[100]="hello world* qian #:feng";
    //    
    ////    char *pstr = strtok(str, " ");
    ////    printf("pstr = %s
    ", pstr);
    ////    
    ////    pstr = strtok(NULL, "* ");
    ////    printf("pstr = %s
    ", pstr);
    //    
    //    char *pstr= str;
    //    while ((pstr = strtok(pstr, "# *:"))) {
    //        printf("pstr = %s
    ", pstr);
    //        pstr= NULL;
    //    }
    //    //printf("pstr = %s
    ", pstr);
    //    
    //    return 0;
    //}
    
    //查找子串函数
    //char    *strstr(const char *src, const char *substr);
    
    //int main(int argc,const char *argv[])
    //{
    //    char *src = "helloworldqianfeng";
    //    
    //    printf("str = %s
    ", strstr(src, "world"));
    //
    //    return 0;
    //}
    
    //输入两个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词。
    //比如:
    //输入:
    //Hi#@welcome#@to#@qianfeng
    //#@
    //输出:
    //Hi
    //welcome
    //to
    //qianfeng
    
    //Hi#@wel@come#@to#@qian#feng
    //Hi
    //wei@come
    //to
    //qian#feng
    
    //int main(int argc,const char *argv[])
    //{
    //    char src[100]={};
    //    char substr[50]={};
    //    scanf("%s%s", src, substr);
    //    char *p,*q;
    //    p = q = src;
    //    
    //    int len = (int)strlen(substr);
    //    while ((p= strstr(p, substr))) {
    //        *p = '';
    //        printf("%s
    ", q);
    //        p+=len;
    //        q = p;
    //    }
    //    if (*q) {
    //        printf("%s
    ",q);
    //    }
    //    return 0;
    //}
    
    //sprintf
    //int     sprintf(char * , const char * , ...)
    //格式化往字符缓冲区中写入字符串
    //sscanf
    //int     sscanf(const char * , const char * , ...)
    
    int main(int argc,const char *argv[])
    {
        char buf[100]={};
        int a=100;
        float f= 3.14;
        
        int ret = sprintf(buf,"###%d***%.2f$$$",a,f);
        printf("buf = %s
    ", buf);
        printf("ret = %d
    ", ret);
        
        char *src ="#34@5.46*";
        
        int b;
        float f2;
        
        ret = sscanf(src, "#%d@%f*",&b, &f2);
        
        printf("b = %d f2 = %.2f
    ", b, f2);
        printf("ret = %d
    ", ret);
        
        return 0;
    }
  • 相关阅读:
    [扩展推荐] Laravel 中利用 GeoIP 获取用户地理位置信息
    10 个优质的 Laravel 扩展推荐
    5 个非常有用的 Laravel Blade 指令,你用过哪些?
    PHP 7.3 我们将迎来灵活的 heredoc 和 nowdoc 句法结构
    使用 Swoole 来加速你的 Laravel 应用
    一个成功的 Git 分支模型(适用于商业应用开发)
    github搜索语法
    python协程爬虫-aiohttp+aiomultiprocess使用
    python-协程、多线程、多进程性能比较
    functools模块-为函数预设args/kwargs参数
  • 原文地址:https://www.cnblogs.com/0515offer/p/4554997.html
Copyright © 2011-2022 走看看