社区
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));
}
...全文
249
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写文章
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。
Java从入门到进阶(套餐系列)
本课程为Java从入门到进阶的系列课程。 共包含20季: 1.初识Java 2.变量和数据类型 3.运算符 4.选择结构 5.循环结构 6.方法 7.数组 8.面向对象 9.抽象类和接口 10.阶段项目:银行管理系统
11
.常用类 12.枚举、泛型、...
c语言
输出
字母是问号,为什么数组
输出
会多一个问号
话题:为什么数组
输出
会多一个问号回答:这个问题问的。是什么数组,int数组,char数组?什么叫多
输出
一个问好。最好把码贴出来,才知道是什么。不过估计应该是char数据没有设置字符串结束符,
输出
的时候越界了。...
Win
11
更改声音
输出
设备的方法
如果您的计算机连接了多个
输出
设备,为了方便切换,有什么简单便捷的方法吗?下面小编就给大家带来4种不同的更换方法,希望对您有所帮助。 更多系统教程尽在小白系统重装官网 单击由 Wi-Fi 图标、扬声器图标...
C //习题 6.6
输出
以下的杨辉三角形(要求
输出
10行)
【代码】C //习题 6.6
输出
以下的杨辉三角形(要求
输出
10行)
JDK
11
GC日志
输出
总结一下日志
输出
的几个命令: -XX:+PrintGC
输出
简略信息 -XX:+PrintGCDetails
输出
详细信息 -XX:+PrintGCTimeStamps
输出
...上述gc日志是在JDK1.8中常用到的,但是在jdk
11
中已经被标记为过时 那么在jdk
11
中...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章