C语言的字符数组和字符串的区别

Python011

C语言的字符数组和字符串的区别,第1张

1、长度不同:

对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。字符串的结尾是以null 字符结尾,所以长度会有所不同。

2、结尾不同

对于字符串,它必须以 null 字符(也就是'\0',用十六进制表示为 0x00)结尾,其后的字符不属于该字符串。

字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。字符数组则不会自动增加任何东西。

3、对于字符串,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。

扩展资料:

字符串函数应用

1.连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.

例:concat('11','aa')='11aa'

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:copy('abdag',2,3)='bda’

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:='abcde'delete(s,2,3)结果s:='ae'

4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abcinsert('12',s,2)结果s:='a12bc'

参考资料:百度百科  c语言(c语言)

利用fgets()取得一个字符串,直到读取到"回车"符,而你得到的字符串中含有“回车”(ascii:10),比你要比较的字符串多一个“回车”,所以strcmp()比较结果一直不为零。

如第一次while循环的结果:

main() {int a[10],b[10],i,j=0,k=0,e=0 for(i=0i<10i++) scanf("%d",&a[i]) printf("\n") for(i=0i<10i++) scanf("%d",&b[i]) printf("\n") for(i=0i<10i++) {if(a[i]>b[i]) j++ else if(a[i]b %d times\na#includeint main(){int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 }int a,b, text, hello for(a=0a<10-1a=a+1) { //在这里进行比较的开始的代码hello = 1 //假如剩下的元素已经被排序好了,然后接着进行下面的比较for(b=0b<10-1-ib=b+1){if(numbers[b] >numbers[b+1]){text= numbers[b]numbers[b] = numbers[b+1]numbers[b+1] = texthello= 0}}if(hello) break }for(a=0a<10a=a+1){printf("%d ", numbers[a])}printf("\n")return 0}扩展资料:C语言中数组元素大小的相关排序规则:一、首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:1、参数首先必须是一个函数;2、函数必须有一个明确的返回值;3、返回值必须是number类型,但不可以是NaN。二、排序中的具体规则:1、首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;2、如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;3、如果返回值是一个负数或0,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。4、默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字)的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。注意:对数组的元素进行排序需要不断比较两个数字的大小,10个元素排序一共需要比较9次,直到所有的元素被都完完全全地被比较一次。