请教C++中char* 和char数组间转换的问题

我写的这个小程序的作用是把strstr()函数的返回值放到一个char数组p[50]里,可是编译的时候会提示错误“errorC2440:'=':cannotconvert... 我写的这个小程序的作用是把strstr()函数的返回值放到一个char数组p[50]里,可是编译的时候会提示错误“error C2440: '=' : cannot convert from 'char *' to 'char [50]'”,我发现当我把char p[50]改成char* p 就运行正常了,可是我需要把返回值放到一个数组里,请问我该如何修改呢??

void main()
{
char p[50];
memset(p,0,50);
p=strstr("abcopendef","open");
cout<<p;
}
不好意思,说错了,我是想把返回的指针所指向的字符串放到数组里,不是指针,呵呵·
展开
 我来答
wanfustudio
2009-05-06 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3744万
展开全部
数组不能作为左值,可以这样改

#include<string.h>
#include<iostream.h>
void main()
{
char p[50],*p2;
memset(p,0,50);
p2=strstr("abcopendef","open");

//不判这个的话,如果没有找到open,p2为NULL,执行拷贝会崩溃
if(p2 != NULL)
{
strcpy(p,p2);//仅当p2不为NULL
cout <<p<<endl;
}
else
{
cout <<"not exist"<<endl;
}
}
can159263
2009-05-06 · TA获得超过243个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:0
展开全部
//可以这样改
#include <iostream>
#include <string>
using namespace std;

int main()
{
char p[50];
memset(p,0,50);
string a=strstr("abcopendef","open");
for(int i=0;i<a.length()&&a.length()<=50;i++){
p[i]=a[i];
}
cout <<p<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摆渡白肚白度
推荐于2017-11-27 · TA获得超过339个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:192万
展开全部
strstr返回的是一个地址值,而数组名表示的也是一个地址值(该数组的首地址)它是一个常量。你怎么能把一个地址放到一个常量里呢? 而且你为什么要把返回值(地址值)放到数组中呢?还是你想把返回值所指向的内存后面的复制到数组中?如果是这样的话,可以这样处理:

int main()
{
char p[50], *q;
q = strstr("abcopendef","open");
if(q != NULL)
strcpy(p, q);
else
strcpy(p, "not found!");

cout << p;
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
buaasrf
2009-05-06
知道答主
回答量:20
采纳率:0%
帮助的人:20.5万
展开全部
严重同意二楼。二楼是个不错的解决方案……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式