请教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;
}
不好意思,说错了,我是想把返回的指针所指向的字符串放到数组里,不是指针,呵呵· 展开
void main()
{
char p[50];
memset(p,0,50);
p=strstr("abcopendef","open");
cout<<p;
}
不好意思,说错了,我是想把返回的指针所指向的字符串放到数组里,不是指针,呵呵· 展开
4个回答
展开全部
数组不能作为左值,可以这样改
#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;
}
}
#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;
}
}
展开全部
//可以这样改
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
严重同意二楼。二楼是个不错的解决方案……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询