社区
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));
}
...全文
274
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。
list 直接
输出
为什么是一个数组?
在collection,例如list中,List<Integer> list = new ArrayList<>();list.add(1);System.out.println(list);直接借助于类对象的...小白,知道这样写,只想知道背后的为什么?已...
c++第
11
章·流类库与输入
输出
流是信息流动的一种抽象一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动1、程序建立一个流对象 2、指定这个流对象与某个...2、cerr:标准错误
输出
,没有缓冲,发送给它的内容立即被
输出
3
11
. Shell 输入
输出
重定向
Shell 默认的输入为键盘输入, 默认
输出
则是终端的Shell 窗口. 但是有时候我们希望某些命令
输出
的内容不显示,或者想将
输出
的结果写入其它文件, 这就用到了
输出
重定向.
输出
重定向不常用, 所以就不做描述了. 1. ...
c语言
输出
宽度右对齐,
输出
宽度设置
宽度是为
输出
提供的最小空间量。当
输出
小于宽度时,它是右对齐的。当
输出
大于宽度时,将忽略宽度。示例代码#include int main(){printf("%%15s = %15s\n", "hello");printf("%%14s = %14s\n", "hello");printf("%%13...
js里面字符1和数字1相加的结果是
11
,如何解决这个问题。js里面使用EL表达式。
var pageCurrent = "${pageBean.currentPage}"; //js里面要想获取EL表达式的值,需要使用双引号。 var pageNum = parseInt(pageCurrent) + 1;...//pageCurrent为字符型,需要转换为int之后再相加。
C语言
70,037
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章