C语言-字符串与字符数组区别

    xiaoxiao2023-10-06  158

    区别:

    C语言中没有字符串这种数据类型,可以通过char的数组来代替字符串一定是一个char的数组,但char的数组未必是字符串数字0(和字符'\0'等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char数组。

    注:

    %s是打印一个字符串,%c是打印一个字符 %s会接收字符串结束标志'\0'之前的所有字符,在ASCII中就是0

     

    1.不指定数组长度:没有0结束符,有多个元素就有多长

     

    普通字符数组,输出结果乱码,因为没有'\0'结束符

    以'\0'或数字0结尾的字符数组是字符串

    打印结果为:

    2.指定长度:后面没有赋值的元素,自动补0

    3.%s遇到'\0'自动结束输出

    4.若输入的字符串含有空格,scanf默认遇到空格结束输入

    例如输入:hello world,输出如下

    这时可以采用正则表达式来改变scanf默认结束标志

    若将正则表达式改成[^1-9],则表示遇到1-9的任意数字结束输入

    5.字符串追加

    #include <stdio.h> #include <stdlib.h> int main() { int n=100,n1,n2,i = 0; printf("请输入n1,n2:\n"); scanf("%d %d",&n1,&n2); char arr1[n1],arr2[n2],arr[n]; printf("请输入arr1的内容:\n"); scanf("%s",&arr1); printf("请输入arr1的内容:\n"); scanf("%s",&arr2); while(arr1[i]!='\0'){ //当遇到arr1的字符结束标志结束复制 arr[i] = arr1[i]; i++; } while(arr2[i-n1]!='\0'){ //当遇到arr2的字符结束标志结束复制 arr[i] = arr2[i-n1]; //arr2的序号应减去arr1的长度,防止溢出 i++; } arr[i] = '\0'; //添加字符串结束标志 printf("arr1+arr2相加后的结果为:\n"); printf("%s",arr); return 0; }

    最新回复(0)