社区
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));
}
...全文
261
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。
怎么在Windows
11
中为音频
输出
选择扬声器
下面小编为大家带来在Windows
11
中为音频
输出
选择扬声器方法介绍,快来看看吧! 在Windows
11
中为音频
输出
选择扬声器方法 方法一、如何在设置中选择声音
输出
设备 在Windows设置中更改扬声器很容易。为此,请右键单击...
list 直接
输出
为什么是一个数组?
在collection,例如list中,List<Integer> list = new ArrayList<>();list.add(1);System.out.println(list);直接借助于类对象的...小白,知道这样写,只想知道背后的为什么?已...
JDK
11
GC日志
输出
总结一下日志
输出
的几个命令: -XX:+PrintGC
输出
简略信息 -XX:+PrintGCDetails
输出
详细信息 -XX:+PrintGCTimeStamps
输出
...上述gc日志是在JDK1.8中常用到的,但是在jdk
11
中已经被标记为过时 那么在jdk
11
中...
c++第
11
章·流类库与输入
输出
流是信息流动的一种抽象一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动1、程序建立一个流对象 2、指定这个流对象与某个...2、cerr:标准错误
输出
,没有缓冲,发送给它的内容立即被
输出
3
C语言中的printf用%d
输出
float类型数据出现或以%f
输出
int型数据的结果为什么是0
float a=7.5f; 如果用printf("... 为什么 7.5 用%d
输出
的是0?分析如下: 首先来了解下printf的
输出
格式,int 和 long int 都是32位的,用%d
输出
;float 、double都是%f
输出
,但 float 是32位...
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章