C语⾔-字符串与字符数组区别
区别:
C语⾔中没有字符串这种数据类型,可以通过char的数组来代替
字符串⼀定是⼀个char的数组,但char的数组未必是字符串
c语言如何创建字符串数组数字0(和字符'\0'等价)结尾的char数组就是⼀个字符串,但如果char数组没有以数字0结尾,那么就不是⼀个字符串,只是普通字符数组,所以字符串是⼀种特殊的char数组。
注:
1. %s是打印⼀个字符串,%c是打印⼀个字符
2. %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;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。