美文网首页我爱编程
C语言入门开发-认识字符串

C语言入门开发-认识字符串

作者: 孙国庆 | 来源:发表于2015-04-23 17:53 被阅读114次

    认识字符串
    [字符串]一串字符,最有一个致富思“、0”,该字符一般称为“尾零”,其ascii的值为0,是一个不可见的字符,标识一个字符串的结束。

    1、isaplpha(判断字母)

    判断字符chr是否为英文字母,是字母返回1,不是字母返回0;
    原型:⬇️

    include <stdio.h>

    include <ctype.h>

    int myIsalpha(int c);
    int main ()
    {
    char chr = '\0';

    scanf("%c",&chr);
    
    if(myIsalpha(chr))
    {
        printf("%c 是字母\n",chr);
    }
    else
    {
        printf("%c不是字母\n",chr);
    }
    return 0;
    

    }

    int myIsalpha(int c)
    {
    if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
    {
    return 1;
    }
    return 0;

    }

    isnumber() 判断是否是数字字符

    如果是数字字符返回1,否则返回0;
    原型:⬇️

    include <stdio.h>

    include <ctype.h>

    int myIsnumber(int c);
    int main ()
    {
    char chr = '\0';
    scanf("%c",&chr);

    if(myIsnumber(chr))
    {
        printf("%c是数字字符\n",chr);
    }
    else
    {
        printf("%c不是数字字符\n",chr);
    }
    
    return 0;
    

    }

    int myIsnumber(int c)
    {
    if(c >= '0' && c <= '9')
    {
    return 1;
    }
    return 0;
    }

    isupper() 判断是否大写字母

    如果是大写字母返回1,否则返回0 ;
    原型 ⬇️

    include <stdio.h>

    include <ctype.h>

    int myIsupper(int c);
    int main ()
    {
    char chr = '\0';
    scanf("%c", &chr);

    if(myIsupper(chr))
    {
        printf("%c是大写\n",chr);
    }
    else
    {
        printf("%c不是大写\n",chr);
    }
    return 0 ;
    

    }
    int myIsupper(int c)
    {
    if(c >= 'A' && c <= 'Z')
    {
    return 1;
    }
    return 0;
    }

    islower() 判断是否是小写字母
    #include <ctype.h>
    int
    islower(int c);
    如果是小写字母返回1,否则返回0

    toupper() 小写转大写字母
    #include <ctype.h>
    int
    toupper(int c)
    字母小写转成大写
    原型:⬇️

    include <stdio.h>

    include <ctype.h>

    int myToupper(int c);
    int main()
    {
    char chr1 = '\0';
    char chr2 = '\0';

    scanf("%c",&chr1);
    chr2 = myToupper(chr1);
    
    printf("chr2 = %c\n",chr2);
    printf("chr1 = %c\n",chr1);
    

    }

    int myToupper(int c)
    {
    if(c >= 'a' && c <= 'z')
    {
    return (c - 32);
    }
    return c;
    }

    strlen() 字符串长度
    #include <string.h>

    size t
    strlen(const char *s);
    

    size_t = = = =unsigned long

    include <stdio.h>

    include <string.h>

    size_t myStrlen(const char* s);
    int main ()
    {
    char str[128] = "";
    gets(str);

    printf("strlen(str) = %lu\n",myStrlen(str));
    
    
    return 0;
    

    }

    size_t myStrlen(const char* s)
    {
    int sum = 0;

    while(*s++)
    {
        sum++;
        
    }
    return sum;
    

    }

    strcpy() 字符串复制
    #include
    char *
    strcpy(char *dst,cons char *src)
    dst 是一个数组的首地址,src是一个字符串的首地址,函数负责将src 拷贝到dst中

    include <stdio.h>

    include <string.h>

    char* myStrcpy(chardst,const charsrc);
    int main ()
    {
    char str[128] = "";
    char arr[128] = "";
    char* tem = NULL;
    gets(arr);

    tem = myStrcpy(str,arr);
    
    printf("str = %s\n",str);
    printf("tem = %s\n",tem);
    return 0;
    

    }

    char* myStrcpy(char* dst, const charsrc)
    {
    char
    p = dst;
    //while(*dst++ = src++);
    while(
    src)
    {
    *dst = *src;
    dst++;
    src++;
    }
    *dst = '\0';
    return p;
    }

    strcat ()

    s1是一个数组的首地址,s2是一个字符的首地址,函数负责s2追加到s1的末尾🔚

    include <stdio.h>

    include <string.h>

    char* myStrcat(char* s1, const char* s2);
    size_t myStrlen(const chars);
    int main ()
    {
    char str1[128] = "abcd";
    char str2[128] = "";
    char
    temp = NULL;
    gets(str2);
    temp =myStrcat(str1,str2);

    printf("str1 = %s\n",str1);
    printf("temp = %s\n",temp);
    
    return 0;
    

    }

    char* myStrcat(char* s1, const char* s2)
    {
    char* p = s1;
    int len = myStrlen(s1);
    s1 += len;
    while(*s2)
    {
    *s1 = *s2;
    s1++;
    s2++;
    }
    *s1 = '\0';
    return p;
    }

    size_t myStrlen(const char* s)
    {
    int sum = 0;

    while(*s++)
    {
        sum++;
    }   
    return sum;
    

    }

    strcmp() 字符串比较,比较两个字符串的大小,S1大返回正数,S2大返回负数,相等返回0
    [注]首先比较两个字符串的第一个字符,谁的ascii大,谁就大。如果第一个字符相等,那么继续比较下一个字符。

    绝对不能用关系运算符比较两个字符的大小,这是两个地址,没有任何意义(str >str2(错误的))

    include <stdio.h>

    include <string.h>

    int myStrcmp(const char* s1, const char* s2);
    int main ()
    {
    char str1[128] = "";
    char str2[128] = "";
    char ret = 0;
    gets(str1);
    gets(str2);

    ret = myStrcmp(str1, str2);
    
    if(ret > 0)
    {
        printf("str1 > str2");
    }
    else if
    {
        printf("str1 < str2");
        
    }
    else
    {
        printf("str1 = str2");
    
    }
    return 0;
    

    }

    int myStrcmp(const char* s1, const char* s2)
    {
    while((*s1 == *s2) && *s1)
    {
    s1++;
    s2++;
    }
    return *s1 - *s2;
    }

    strchr()

    strchr:在s这个字符串中寻找字符C第一次出现的为止(地址),如果找到字符C,返回C的地址,否则返回空(NULL)

    include <stdio.h>

    include <string.h>

    char* myStrchr(const char* s,int c);

    int main ()
    {
    char str[128] = "";
    char chr = 's';
    char* p = NULL;

    gets(str);
    p =myStrchr(str, chr);
    
    if (p == NULL)
    {
        printf("在%s中没有找到%c\n",str, chr);
    
    }
    else
    {
        printf("在%s中找到%c\n",str, chr);
        printf("p = %s\n",p);
    }
    return 0;
    

    }

    char* myStrchr(const char* s,int c)
    {
    const char* p = s;
    int len = 0;
    while(*p)
    {
    if(c == p)
    {
    return (char
    )p;
    }
    p++;
    }
    return NULL;

    }

    strrchr():在S这个字符串中,C最后一次出现的位置(地址),如果找到字符C,返回c的地址,否则返回空(NULL);

    strstr()

    在字符串s1中寻找字符串s2,(至少s1要长等于s2),寻找子符串,如果找到返回子串第一次出现的位置,否则返回空(NULL)

    include <stdio.h>

    include <string.h>

    int main ()
    {
    char str1[128] = "";
    char* str2 = "sunck";
    char* p =NULL;

    gets(str1);
    
    p = strstr(str1, str2);
    
    if(p == NULL)
    {
        printf("%s不在%s中\n",str2, str1);
    }
    else
    {
        printf("%s在%s中\n",str2, str1);
    
    }
    return 0;
    

    }

    strtok()

    字符串的风格,用sep这个字符串去风格str字符串

    include <stdio.h>

    include <string.h>

    int main ()
    {
    char str1[128] = "";
    char* p = NULL;

    p =str1;
    while (1)
    {
        p = strtok(p, " ");
        if(!p)
        {
            break;
        }
        //-----------
        printf("%s\n",p);
    
        p = NULL;
    }
    gets(str1);
    

    }

    atoi()

    将数字字符串转换为十进制数(遇到一个非数字字符立即停止)

    include <stdio.h>

    include <stdlib.h>

    int myAtoi(const char* str);
    int myIsnumber(int c);

    int main ()
    {
    char str[20] = "";
    int num = 0;

    gets(str);
    
    num =myAtoi(str);
    
    printf("num = %d\n",num);
    
    return 0;
    

    }

    int myAtoi(const char* str)
    {
    int num = 0;
    int flag = 1;

    if (*str == '-')
    {
        flag = -1;
        str++;
    }
    else if(*str == '+')
    {
        str++;
    }
    while (*str && myIsnumber(*str))
    {
        num = num * 10 + (*str - '0');
        str++;
    }
    return num * flag;
    

    }

    int myIsnumber(int c)
    {
    if(c >='0' && c <= '9')
    {
    return 1;
    }
    return 0;
    }

    相关文章

      网友评论

        本文标题:C语言入门开发-认识字符串

        本文链接:https://www.haomeiwen.com/subject/uhcpfttx.html