• C学习笔记-字符串


    对于C语言来说,字符串其实就是最后一个元素为’’的char数组

    字符数组的初始化

    字符数组常见的有两种初始化方式

    char str[] = "hello";
    

    或者

    char str[] = {'h', 'e', 'l', 'l', 'o'};
    

    当使用sizeof(str)时,得到的大小为6,此时是算上了’’的。
    如果不指定数组长度的初始化,末尾加上’’,否贼输出长度未知

    char str[] = {'a', 'b', 'c', ''};//这种初始化末尾需要加上''
    char str[] = "abc";//这种初始化不需要加上''
    

    字符串可以存放在堆区,栈区和常量区

    缓冲区溢出

    char arr[3] = {0};
    scanf(%s, arr);
    //当输入长度大于2,会溢出
    

    如果输入的字符大于字符数组的长度,会造成缓冲区溢出
    scanf会以空格作为分隔符

    字符串处理函数

    gets

    从输入设备获取输入字符串
    gets不会检查预留缓冲区是否可容纳输入数据,没有解决缓冲区溢出问题

    fgets

    fgets用于读取文件,也可从键盘读取,此时要使用stdin。fgets会截取长度符合输入指定

    char s[100] = { 0 };
    fgets(s, sizeof(s), stdin);
    

    puts

    puts函数打印字符串,与printf不同,puts会在最后自动添加一个’ ’

    char s[] = "hello"
    puts(s);
    

    fputs

    fputs是puts的文件操作版本,也不会输出多余的’ ’

    char s[] = "hello";
    fputs(s, stdout);
    

    strlen,字符串长度

    strlen返回字符串长度,不包含’’

    strlen(arr);
    

    strcat,字符串追加

    strcat(a,b);
    

    实现:

    int len_a = strlen(a);
    int len_b = strlen(b);
    for ( int i = len_a; i < len_a + len_b; i++)
    {
        a[i] = b[i - lena];
    }
    

    strncat,字符串有限追加

    strncat(a, b, sizeof(a) - strlen(a) - 1);
    

    strcmp,字符串比较

    如果相同返回0

    strcmp(a, b);
    

    strncmp,字符串有限比较

    只要指定长度内相同,则返回0

    strncmp(a, "str", 3);
    

    strcpy字符串拷贝

    把b拷贝到a

    strcpy(a, b);
    

    strncpy字符串有限拷贝

    防止拷贝越界

    sprintf,格式化字符串

    向char数组输出一个字符串,其他行为和printf一模一样

    sprintf(a, "this is a %d", 10);
    

    strchr查找字符

    返回一个位置的指针,如果没找到,返回NULL

    char *c = strchr(a, 'b');
    

    strstr查找子串

    char *c = strstr(a, "abc");
    

    strtok分割字符串

    字符在第一次调用时strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL每次调用成功则返回指向被分割出片段的指针

    char buf[] = "abc@defg@igk";
    char *p = strtok(buf, "@");;
    while (p)
    {
    	printf("%s
    ", p);
    	p = strtok(NULL, "@");
    }
    

    atoi转化为int

    将字符串整数转化为整数

    atoi(buf);
    

    atof转化为float

    将字符串整数转化为单精度浮点数

    atof(buf);
    

    atol转化为long

    将字符串整数转化为long类型

    atol(buf);
    
  • 相关阅读:
    npm更换成淘宝镜像源以及cnpm
    Windows下使用CMD命令进入MySQL数据库
    python 中 __name__ == '__main__'该如何理解与其作用介绍
    SQL Server数据库一直显示“正在还原”的解决方法
    如何更改SqlServer数据库登录验证模式
    cookie与session区别
    基于layui的select change事件ajax响应(主要用于省市区级联响应,其他的只要修改一下也可适应)
    字母、汉字、特殊符号组成的字符串排序问题
    The source attachment does not contain the source for the file HashMap.class
    Mysql常见SQL查询应用场景
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664804.html
Copyright © 2020-2023  润新知