’,‘’把字符‘c’覆盖了,因为''不可见,所以是a2。然后strcat(a,c+1),把c"og:type" content="webpage">’,‘’把字符‘c’覆盖了,因为''不可见,所以是a2。然后strcat(a,c+1),把c" /> ’,‘’把字符‘c’覆盖了,因为''不可见,所以是a2。然后strcat(a,c+1),把c"> C语言题目关于strcpy与strcat_软件运维_内存溢出
登录
软件运维

软件运维

C语言题目关于strcpy与strcat,第1张阅读15

strcpy(a+1,b+2)把b从第三个元素

‘2’开始拷贝到a的第二个位置,输出是a2,因为

字符串存储的结尾都是‘\0’,‘\0’把字符‘c’覆盖了,因为'\0'不可见,所以是a2。然后strcat(a,c+1),把c从第二个元素开始连接到a上,所以结果是a2yz。有编译错误。

数组

之间拷贝不能直接使用a=b,而是可以使用字符串拷贝函数strcpy。而且

数组

a的长度只有3,而数组b有5个字符,还不包括结尾字符。 字符串拷贝函数strcpy格式:strcpy (字符数组名1,字符数组名2) 的功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2, 也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。

本函数要求字符数组1应有足够的长度,否则不能全部装入所拷贝的字符串。

扩展资料:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4}表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1}而不能写为:static int a[10]=1。 3.若不给可初始化的数组赋初值,则全部元素均为0值。

4.假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5}可写为:static int a[]={1,2,3,4,5}动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组

#include<stdio.h>

#include<string.h>

void f(char p[][10], int n ) /* 字符串从小到大排序*/

{ char t[10]

int i,j

for(i=0i<ni++)

for(j=i+1j<nj++)

if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]) strcpy(p[i],p[j]) strcpy(p[i],t) }

}

main()

{char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"}

f(p,5)

printf("%d\n",strlen(p[0]))

}

分析:


调用的f函数是排列字符串大小的。该函数采用的是选择法排序,用了两个for循环,外循环比较次数为n-1次,内循环为n-1-i次。

所以调用时,排列后的顺序为p[5][10]={“aabdfg”,”abbd”,”abc”,”cd”,”dcdbe”}然后,求字符串长度函数strlen(p[0]),p[0]是二维数组p[5][10]第0行的首地址,指向的内容是第一个字符串,即aabdfg,长度为6,故答案选c

欢迎分享,转载请注明来源:

内存溢出
元素
赋值
微信扫一扫支付宝扫一扫打赏
微信扫一扫
支付宝扫一扫
纯黑
上一篇
下一篇
2023-04-13

发表评论
请登录后评论...
登录
后才能评论

提交
    评论列表(0条)洗手盆
    南怀瑾
    {label}{label}保存{label}{label}{label}{label}