社区
C语言
帖子详情
为什么输出11
xddzccn
2006-12-02 12:00:47
char a[12]="hello world";
char *p;
char str_a[10];
p=str_a;
strcpy(p,a);
printf("the lengh is %d",strlen(p));
}
...全文
267
10
打赏
收藏
为什么输出11
char a[12]="hello world"; char *p; char str_a[10]; p=str_a; strcpy(p,a); printf("the lengh is %d",strlen(p)); }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CAIZHU
2006-12-02
打赏
举报
回复
#include<stdio.h>
#include<string.h>
void main()
{
char a[12]="hello world";
char *p;
char str_a[10];
p=str_a;
strcpy(p,a);
printf("%s",str_a);
printf("\n");
printf("the lengh is %d\n",strlen(p));
}
运行结果
hello world
the lengh is 11
危险 数据溢出
会覆盖其他的数据成员的
最好加给判断
如果strlen(p)>10 则返回错误
程序漏洞 就是缺乏判断引起的
wenbaby
2006-12-02
打赏
举报
回复
char str_a[10];
p=str_a;
strcpy(p,a);
____
这样用是很危险的.就算下面这样,结果也应该是11,但是是危险的.
char str_a[2];
p=str_a;
strcpy(p,a);
xddzccn
2006-12-02
打赏
举报
回复
受教了,
危险 数据溢出
会覆盖其他的数据成员的
我要是想知道它覆盖了哪些数据成员,要怎么弄啊
FairLu
2006-12-02
打赏
举报
回复
strcpy并不会检查数组是否越界。返回值是字符串长度(以'\0'结束)。
strcpy(p,a);//a是一个12字节的数组,字符串长度为11,所以调用strcpy之后,p所指向的字符串的长度11。
jixingzhong
2006-12-02
打赏
举报
回复
strlen 从指定的位置开始查找,一直到出现 \0 字符的字节数目。
它不考虑参数数组的长度,
可能小于该长度, 也可能大于该长度。
呵呵,
如果越界使用数组,
在一些编译器下是会出错的 ....
灰太狼
2006-12-02
打赏
举报
回复
C語言中使用指針一定要注意,很容易出現指針問題,我個人認為隻要是指針一定要malloc,否則會出現異想不到的結果。
lockhall
2006-12-02
打赏
举报
回复
p指向的是"hello world",所以strlen(p) == 11.
lockhall
2006-12-02
打赏
举报
回复
就楼主本身的程序,如果越界的话也不是因为str_a[10]的缘故.
因为p = str_a;只是将数组str_a[]的首地址赋给了指针p
而指针p的内存并未申请.
所以最好在定义了指针p后,申请内存:p =(char*)mall(100*sizeof(char));
alan001
2006-12-02
打赏
举报
回复
也可以用strncpy
whatsouta
2006-12-02
打赏
举报
回复
虽然会产生越界,但仍然执行strcpy完整个a串,只要对str_a紧接着的内存有W权限。
执行strlen时计算到\0结束,因此为11。
Win
11
更改声音
输出
设备的方法
如果您的计算机连接了多个
输出
设备,为了方便切换,有什么简单便捷的方法吗?下面小编就给大家带来4种不同的更换方法,希望对您有所帮助。 更多系统教程尽在小白系统重装官网 单击由 Wi-Fi 图标、扬声器图标...
寻找并
输出
11
~999之间的回文数m
寻找并
输出
11
~999之间的数m,它满足m、m2和m3均为回文数。 回文:各位数字左右对称的整数。 例如:
11
满足上述条件
11
2=121,
11
3=1331 判断一个数是否是回文数的方法:求该数的反序数,若反序数和原数...
用hashset集合存储数值为什么能顺序
输出
用hashset集合存储数值为什么能顺序
输出
1.首先明确一点,hashset实现了set接口,因此是无序的,这个无序是指,元素输入和
输出
的顺序。也就是不管添加元素的顺序是什么,遍历
输出
该集合时,都是按照存储的顺序来的,...
数据类型
输出
格式
不同整型的
输出
使用不同的格式控制符可以
输出
不同类型的整数,它们分别是: %c:
输出
一个字符。c 是 character 的简写。 %s:
输出
一个字符串。s 是 string 的简写。 %f:
输出
一个小数。f 是 float 的简写。 %hd...
c语言怎么输入
11
位数,c语言 当一个数位数超过
11
位 怎么输入
输出
/*版权所有陈冠钢用c语言编输入一个整数
输出
其位数*/#includevoidmain(){intnumber,sum=0;printf("enternumber:\n");scanf("%d",&number);while(number>0){number/=10;sum++;}printf("\n%d",sum);},将它作为...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章