C语言- 字符、字符数组

2021-12-10  本文已影响0人  我阿郑

字符数组和字符串

C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。
C语言中的字符串一定是一个char的数组,但是注意 char的数组未必是字符串

int main(int argc, const char * argv[]) {

    // 字符
    char ch = 'w';
    // 字符数组
    char arr[5] = {'h','e','l','l','o'};
    // 字符串
    // 字符串结束的标志必须是\0 (数字0 等同于\0,但不等同于字符'0')
    char str[] = {'h','e','l','l','o','\0'};
    // char str[] = {'h','e','l','l','o','0'}; 和上面等价
    
    // 字符串 “hello” 会以 \0 作为结束标志位
    char *str1 = "hello";
    // char str[] = "hello" 等同于 char str[] = {'h','e','l','l','o','\0'};
    char str2[] = "hello";
    
    // 如果一串字符没有以0结束,则printf会一直尝试打印下去...
    printf("%s",str); 
    
    // 遍历
    for (int i = 0; i < sizeof(arr); i++) {
        printf("%c",arr[i]); // 打印 hello
    }
    
    for (int i = 0; i < sizeof(str); i++) {
        printf("%c",str[i]); // 打印 hello
    }
    
    for (int i = 0; i < sizeof(str2); i++) {
        printf("%c",str2[i]); // 打印 hello
    }
 
    return 0;
}   

字符串的长度

从头开始,一直到结束符0,中间的字符个数就是字符串的长度

注意事项

int main() {
    int i;
    char str1[30] = "http://c.biancheng.net";
    char str2[] = "C Language";
    char str3[30] = "You are a good\0 boy!";
    printf("str1: %s\n", str1);
    printf("str2: %s\n", str2);
    printf("str3: %s\n", str3);
    return 0;
}

// 打印结果
str1: http://c.biancheng.net
str2: C Language
str3: You are a good

str1 和 str2 很好理解,编译器会在字符串最后自动添加 ‘\0’,并且数组足够大,所以会输出整个字符串。对于 str3,由于字符串中间存在 ‘\0’,printf() 扫描到这里就认为字符串结束了,所以不会输出后面的内容。

(1) 数组要足够大: length + 1
(2) 不以0结束的字符串,不是正常的字符串
(3) 0之后的字符不会被打印出来

上一篇 下一篇

猜你喜欢

热点阅读