字符串

头引用

#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;
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值