字符串

//

//  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\n", isalnum('a'));//判断是否为字母或者数字字符

//    printf("isalpha = %d\n", isalpha('A'));//判断是否为英文字母字符

//    printf("isdigit = %d\n", isdigit('8'));//判断是否为十进制数字字符

//    printf("isgraph = %d\n", isgraph('\t'));//判断是否为可见字符

//    printf("islower = %d\n", islower('a'));//判断是否为小写字母

//    printf("isupper = %d\n", isupper('A'));//判断是否为大写字母

//    printf("isxdigit = %d\n", isxdigit('F'));//判断是否为十六进制字符

//    printf("tolower = %c\n", tolower('A'));//把大写字母转换成小写字母

//    printf("toupper = %c\n", toupper('a'));//把小写字母转换成大写字母

//    printf("digittoint = %d\n", digittoint('f'));//把十六进制字符转换成整型

//    return 0;

//}



//字符串

//"hello world"

//1.字符串中的每一个字符占1个字节

//2.字符串必须用""包含

//3.字符串的末尾必须要有'\0'

//4.打印字符串用%s占位符,只需要传递字符串的首地址

//5.字符串可以用字符数组存储或者存储在堆内存中



//int main(int argc,const char *argv[])

//{

//    char str[]="hello world";//省约数组的长度 必须初始化数组

//    printf("size = %lu\n", sizeof(str));

//    printf("%s\n", 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\n", str1);

//    printf("str2 = %s\n", str2);

//    return 0;

//}



//字符串的长度(字符串的有效长度,有效长度不包含'\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\n", sizeof(str1));

//    

//    printf("length = %lu\n", 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]='\0';

    return dest;

}



//int main(int argc,const char *argv[])

//{

//    char *str1="hello worldqianfeng";

//    char str2[100]={};

//    

//    //printf("str2 = %s\n",mystrcpy(str2, str1));

//    //printf("str2 = %s\n", str2);

//    printf("str2 = %s\n", 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\n", mystrchr(str, 'o'));

//    

//    printf("%s\n", 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\n", mystrcmp(str1, str2));

//    

//    printf("ret = %d\n", 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) = '\0';

    return s1;

}



//int main(int argc,const char *argv[])

//{

//    char str1[100]="helloworld";

//    char str2[]="qianfeng";

//    

//    str1[18]='#';

//    

////    printf("str = %s\n", 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\n", pstr);

////    

////    pstr = strtok(NULL, "* ");

////    printf("pstr = %s\n", pstr);

//    

//    char *pstr= str;

//    while ((pstr = strtok(pstr, "# *:"))) {

//        printf("pstr = %s\n", pstr);

//        pstr= NULL;

//    }

//    //printf("pstr = %s\n", pstr);

//    

//    return 0;

//}



//查找子串函数

//char    *strstr(const char *src, const char *substr);



//int main(int argc,const char *argv[])

//{

//    char *src = "helloworldqianfeng";

//    

//    printf("str = %s\n", 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 = '\0';

//        printf("%s\n", q);

//        p+=len;

//        q = p;

//    }

//    if (*q) {

//        printf("%s\n",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\n", buf);

    printf("ret = %d\n", ret);

    

    char *src ="#[email protected]*";

    

    int b;

    float f2;

    

    ret = sscanf(src, "#%d@%f*",&b, &f2);

    

    printf("b = %d f2 = %.2f\n", b, f2);

    printf("ret = %d\n", ret);

    

    return 0;

}

 

你可能感兴趣的:(字符串)