社区
C语言
帖子详情
关于strcmp的一个问题
lxb365
2005-12-15 11:41:18
char* p="lovemydog";
int lon=strlen(p);
char* q=(char*)malloc(lon);
for(int i=0;i<lon;i++)
q[i]=p[i];
cout<<strcmp(q,p)<<endl;
为什么结果是1,难道p和q不相等吗?
...全文
160
7
打赏
收藏
关于strcmp的一个问题
char* p="lovemydog"; int lon=strlen(p); char* q=(char*)malloc(lon); for(int i=0;i<lon;i++) q[i]=p[i]; cout<<strcmp(q,p)<<endl; 为什么结果是1,难道p和q不相等吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenteanet
2005-12-16
打赏
举报
回复
同意楼上的看法.
Zark
2005-12-16
打赏
举报
回复
原因是楼上诸位说的,不包括'\0'的问题,但q并不一定比p小.因为q实际上是个字符数组不是个字符串,你在strcmp中强行把它视为字符串,因此q将越过lon长度向后搜寻第一个'\0',因此q实质上已经不再是你印象中的那个q了,其内容取决于q+lon后面的内容.
lxb365
2005-12-16
打赏
举报
回复
照你们所说,q比p小,那strcmp(q,p)应该是-1才对,可结果是1啊
sankt
2005-12-16
打赏
举报
回复
char* p="lovemydog";
int lon=strlen(p);
char* q=(char*)malloc(lon+1); //这时候就是0了
for(int i=0;i<lon;i++)
{
q[i]=p[i];
}
cout<<strcmp(q,p)<<endl;
wohow
2005-12-16
打赏
举报
回复
尽管数组越界是所有C/C++程序员都知道的错误,但这样的错误仍然很多人会犯
zeroblock
2005-12-15
打赏
举报
回复
设成这样int lon=strlen(p)+1;
因为strlen函数计算字符串长度,不包括'\0'在内的
fangcd
2005-12-15
打赏
举报
回复
int lon=strlen(p);
这句返回的好像是P的长度,但不包括结束符"/0"
所以q比p小
C语言常用函数源码
strcmp
strlen atoi atol memcpy strchr strstr printf等等
C语言常用函数源码
strcmp
strlen atoi atol memcpy strchr strstr printf等,不可不看.公司面试的时候很容易让写出其中某些函数的源码.这些函数的源码确实简洁,高效
关于
strcmp
函数的用法
strcmp
函数是用来比较2个字符串的函数,如srcmp(字如果符串1,字符串2),从第
一个
字符开始比较,如果到最后两个字符串完全相同,则
strcmp
()函数输出的值为0;若开始出现不同的字符,根据这个字符ASCII码进行比较...
关于字符串比较函数
strcmp
返回值的
问题
字符串比较函数
strcmp
格式:
strcmp
(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。 字符串1=字符串2,返回值=0; 字符串2〉字符串2,返回值〉0; ...
关于
strcmp
比较的
问题
以前听过在AIX下,如果
strcmp
比较是
一个
传入的指针为NULL,则会出错,现在
自己写
一个
strcmp
函数
my_
strcmp
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章