C 语言 字符串

171 阅读1分钟
  1. 凡是常量区定义的数据是不能修改的
  2. 字符串末尾是 \0
  3. gets 和 canf 都是输入设备获取,但是 gets 会把空格当成内容,回车是输出,canf 空格是分隔符,会输出多个字符串,回车是输出

1. scanf

    printf("input str\n");
    while (1) {
//          如果输入超过 10 个字节的字符串   会出现栈溢出  但是不会报错
        char str1[10];
        scanf("%s", str1);
        printf("str=%s\n", str1);
    }

image.png

2. gets:避免输入带空格的字符串被拆分为两个字符串

    while (1) {
        char str1[10];
        gets(str1);
        printf("str=%s\n", str1);
    }

image.png

3. fgets:避免输入带空格的字符串被拆分为两个字符串 同时避免栈溢出

        char str1[10];
//      内容   限制长度   命令行
        fgets(str1, 10, stdin);
//        十个字节一组
        printf("str=%s\n", str1);
    }

image.png

4. 常量区的内容是不能修改的

char *str = "abc";
gets(str);
printf("str=%s\n", str);

image.png

string 之所以可以修改是因为修改的指针指向类型

    char *str = "abc";
//    gets(str);
    str = "123";
    printf("str=%s\n", str);

image.png