C语言怎么设定函数返回值为char*字符串类型?
比如这样一段代码:char*GetString(char*str){char*x[127];printf("%s",str);scanf("%s",&x);returnx...
比如这样一段代码:
char* GetString(char *str)
{
char *x[127];
printf("%s", str);
scanf("%s", &x);
return x;
}
int main()
{
char *p[127];
char *str[127];
scanf("%s", &str);
p = GetString(str);
printf("%s", p);
}
在 return x;
p = GetString(str);
这两行 编译会出现问题 就是不能在CHAR*[127]与char*之间转化的error
但是如果不界定长度的话 scanf赋值的时候就会出错
这个应该怎么解决? 展开
char* GetString(char *str)
{
char *x[127];
printf("%s", str);
scanf("%s", &x);
return x;
}
int main()
{
char *p[127];
char *str[127];
scanf("%s", &str);
p = GetString(str);
printf("%s", p);
}
在 return x;
p = GetString(str);
这两行 编译会出现问题 就是不能在CHAR*[127]与char*之间转化的error
但是如果不界定长度的话 scanf赋值的时候就会出错
这个应该怎么解决? 展开
3个回答
展开全部
把函数的返回值的类型设置为char类型的指针就可以了。
例如:char* MultMatrix( )
实例:
#include <iostream>
using namespace std;
char* MultMatrix( )
{
char*M = new char[4];
M[0]='a';
M[1]='b';
M[1]='c';
M[3]='d';
M[3]='\0';//给字符串写结尾
cout << M[0] << " " << M[1] << endl;//输出返回前的数组
cout << M[2] << " " << M[3] << endl;
return M;
}
int main()
{
char *M = MultMatrix();
cout << M[0] << " " << M[1] << endl;//输出返回后数组
cout << M[2] << " " << M[3] << endl;
delete[] M;
return 0;
}
运行结果:
a b
c d
a b
c d
例如:char* MultMatrix( )
实例:
#include <iostream>
using namespace std;
char* MultMatrix( )
{
char*M = new char[4];
M[0]='a';
M[1]='b';
M[1]='c';
M[3]='d';
M[3]='\0';//给字符串写结尾
cout << M[0] << " " << M[1] << endl;//输出返回前的数组
cout << M[2] << " " << M[3] << endl;
return M;
}
int main()
{
char *M = MultMatrix();
cout << M[0] << " " << M[1] << endl;//输出返回后数组
cout << M[2] << " " << M[3] << endl;
delete[] M;
return 0;
}
运行结果:
a b
c d
a b
c d
展开全部
老大,你代码写得有问题,首先你先确定是字符串指针,而不是指针数组
char *p[127];
char *str[127];
这两行都有问题
char* GetString(char *str)
{
char *strp=NULL;//先定义一个字符串指针
char x[127];
printf("%s", str);
scanf("%s", &x);
strp=x;//将指针指向这个新分配的字符串内存地址
return strp;//这样就能返回字符串指针了
}
int main()
{
char *p;//既然你的函数返回的是char*,此处当然要定义为char*
char str[127];
scanf("%s", &str);
p = GetString(str);
printf("%s", p);
}
char *p[127];
char *str[127];
这两行都有问题
char* GetString(char *str)
{
char *strp=NULL;//先定义一个字符串指针
char x[127];
printf("%s", str);
scanf("%s", &x);
strp=x;//将指针指向这个新分配的字符串内存地址
return strp;//这样就能返回字符串指针了
}
int main()
{
char *p;//既然你的函数返回的是char*,此处当然要定义为char*
char str[127];
scanf("%s", &str);
p = GetString(str);
printf("%s", p);
}
更多追问追答
追问
这个代码最后P的值会产生乱码
追答
对不起,有个地方还得改一下
char* GetString(char *str)
{
char *strp=NULL;//先定义一个字符串指针
char x[127];
printf("%s", str);
scanf("%s", x);//此处修改 字符串指针在输入是不需要作为引用
strp=x;//将指针指向这个新分配的字符串内存地址
return strp;//这样就能返回字符串指针了
}
int main()
{
char *p;//既然你的函数返回的是char*,此处当然要定义为char*
char str[127];
scanf("%s", str);//字符串指针在输入是不需要作为引用
p = GetString(str);
printf("%s", p);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *x[127];
修改为 char x[127];
char *p[127];
char *str[127];
修改为
char p[127];
char str[127];
修改为 char x[127];
char *p[127];
char *str[127];
修改为
char p[127];
char str[127];
追问
p = GetString(str);
这一行仍然会报错
无法从“char *”转换为“char [127]‘
追答
GetString(char *str) 修改为 GetString(char str[])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询