字符串

来源:互联网 发布:网络人脸搜索网站 编辑:程序博客网 时间:2024/05/29 04:40

头引用

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>

使用字符数组存储字符串

void main(){    //最后'\0'是结束标志,或者设置比字符串多一些的空间    //char str[] = {'h', 'e', 'l', 'l', 'o', '\0'};    //char str[6] = {'h', 'e', 'l', 'l', 'o'};    char str[10] = 'hello';    //可以修改    str[0] = 'a';    printf("%s\n", str);    printf("%#x\n", str);    getchar();}

字符指针

void main(){    //内存连续排列    char *str = "hello c++";    //不可修改    //str += 1;    //*str = 'y'; 错误的    printf("%s\n", str);    printf("%#x\n", str);    //使用指针加法,截取字符串    str += 3;    while(*str){        printf("%c", *str);        str++;    }    printf("\n打印结束");    getchar();}

字符串相关函数

API:字符串文档

strcat字符串拼接函数

  • 原型:extern char *strcat(char *dest,char *src);
  • 功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
  • 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
      // strcat.c      #include <syslib.h>      #include <string.h>      main()      {        char d[20]="Golden Global";        char *s=" View";        clrscr();        strcat(d,s);        printf("%s",d);        getchar();        return 0;      }

strcpy 字符串复制

  • 原型:extern char *strcpy(char *dest,char *src);
  • 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
  • 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
// strcpy.c      #include <syslib.h>      #include <string.h>      main()      {        char *s="Golden Global View";        char d[20];        clrscr();        strcpy(d,s);        printf("%s",d);        getchar();        return 0;      }

demo:

void main(void){    char dest[50];    char *a = "hello";    char *b = "world";    strcpy(dest, a);    strcat(dest, b);    printf("%s\n", dest);    system("pause");}

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

  • 原型:extern char *strchr(char *s,char c);

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

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

    举例:

      // strchr.c      #include <syslib.h>      #include <string.h>      main()      {        char *s="Golden Global View";        char *p;        clrscr();        strchr(s,'V');        if(p)          printf("%s",p);        else          printf("Not Found!");        getchar();        return 0;      }

strstr 从字符串haystack中寻找needle第一次出现的位置

  • 原型:extern char *strstr(char *haystack, char *needle);
  • 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)
  • 说明:返回指向第一次出现needle位置的指针,如果没有找到则返回NULL

举例:

#include <syslib.h>#include <string.h>main(){    char *s = "Hello c++";    char *l = "c+";    cahr *p;    clrscr();//清除文本模式窗口    p = strstr(s, l);    if(p){        printf("%s", p);    }else{        printf("Not Found!");    }    getchar();    return 0;}

strcmp 比较字符串s1和s2 strcmpi 忽略大小写

  • 原型:extern int strcmp(char *s1, char *s2);
  • 功能:比较字符串s1和s2
  • 说明:当s1 < s2 返回<0,当s1 = s2 返回 0, 当s1 > s2 返回 > 0

举例:

#include <syslib.h>#include <string.h>main(){    char *s1 = "hell0, c";    char *s2 = "hello, c++";    int r;    clrscr();    r = strcmp(s1, s2);    if(!r){//r == 0        printf("s1 == s2");    }else if(r > 0){        printf("s1 > s2");    }else if(r < 0){        printf("s1 < s2");    }    getchar();    return 0;}

strset 把字符串s中的所有字符都设置成字符c

  • 原型:extern char *strset(char *s , char c);
  • 功能:把字符串s中的所有字符都设置成字符c
  • 说明:返回指向s的指针
    举例:
#include <syslib.h>#include <string.h>main(){    char *s = "hello, c++);    clrscr();    strset(s, 'n');    printf("%s", s);    getchar();    return 0;}

atoi 字符串转为int类型

atol 将字符串转换为长整型值

void main(void){    char* str = "a123";    //int r = atoi(str);    printf("%d\n", r);    system("pause");}

strtod字符串转double类型

void main(void){    char* str = "77b8b";    char** p = NULL;    //char* p = str + 2;    //参数说明:str为要转换的字符串,p为第一个不能转换的字符的指针    double r = strtod(str, p);    printf("%lf\n", r);    printf("%#x\n", p);    system("pause");}

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

  • 原型:extern char *strupr(char *s);
  • 功能:将字符串s转换为大写形式
  • 说明:只转换s中出现的小写字母,不改变其它字符,返回指向s的指针。

举例:

#include <syslib.h>#include <string.h>main(){    char *s = "Hello World";    clrscr();    printf("%s", strupr(s));    getchar();    return 0;}

strlwr 将字符串s转换为小写形式

  • 原型:extern char *strlwr(char *s);
  • 功能:将字符串s转换为小写形式
  • 说明:只转换s中出现的大写字母,不改变其他字符。返回指向s的指针。
    举例:
#include <syslib.h>#include <string.h>main(){    char *s = "Hello World";    clrscr();    printf("%s", strlwr(s));    getchar();    return;}

自定义转换为小写

void mstrlwr(char str[], int len){    int i = 0;    for(; i < len; i++){        //A-Z 字母 a-z        if(str[i] >= 'A' && str[i] <= 'Z'){            str[i] = str[i] - 'A' + 'a';        }    }}void mian(void){    char str[] = "Hello World";    mstrlwr(str, strlen(str));    printf("%s\n", str);    system("pause");}

删除字符串中指定的字符

void delchar(char *str, char del){    char *p = str;    while (*str != '\0') {        if (*str != del) {            *p++ = *str;        }        str++;    }    *p = '\0';}

删除最后一个字符

void main(void){    char str[] = "hello,";    str[strlen(str) - 1] = '\0';    printf("%s\n", str);    system("pause");}

memcpy 由src所指内存区域复制count个字节到dest所指内存区域。

  • 原型:extern void *memcpy(void *dest, void *src, unsigned int count);

  • 功能:由src所指内存区域复制count个字节到dest所指内存区域。

  • 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

    举例:

      // memcpy.c      #include <syslib.h>      #include <string.h>      main()      {        char *s="Golden Global View";        char d[20];        clrscr();        memcpy(d,s,strlen(s));        d[strlen(s)]=0;        printf("%s",d);        getchar();        return 0;      }

memchr 从buf所指内存区域的前count个字节查找字符ch

  • 原型:extern void *memchr(void *buf, char ch, unsigned count);

  • 功能:从buf所指内存区域的前count个字节查找字符ch。

  • 说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。

    举例:

      // memchr.c      #include <syslib.h>      #include <string.h>      main()      {        char *s="Hello, Programmers!";        char *p;        clrscr();        p=memchr(s,'P',strlen(s));        if(p)          printf("%s",p);        else          printf("Not Found!");        getchar();        return 0;      }

memmove 由src所指内存区域复制count个字节到dest所指内存区域

  • 原型:extern void *memmove(void *dest, const void *src, unsigned int count);

  • 功能:由src所指内存区域复制count个字节到dest所指内存区域。

  • 说明:src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。

    举例:

      // memmove.c      #include <syslib.h>      #include <string.h>      main()      {        char *s="Golden Global View";        clrscr();        memmove(s,s+7,strlen(s)-7);        s[strlen(s)-7]=0;        printf("%s",s);        getchar();        return 0;      }

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

  • 原型:extern char *strpbrk(char *s1, char *s2);
  • 功能:在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内。

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

    举例:

  // strpbrk.c      #include <syslib.h>      #include <string.h>      main()      {        char *s1="Welcome To Beijing";        char *s2="BIT";        char *p;        clrscr();        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();        return 0;      }
1 0
原创粉丝点击