C语言返回值问题,求高手指教

自定义一个函数 myrand();要求在a==1时,return “abc”;a==2时,return “abc123”;
之前我定义了一个char myrand(int a); 然后用 if 语句,return “ ”;结果报错,返回char值的长度不定,所以说前面的char 定义函数不对。
谢谢各位的回答,非常感谢!
不知道选谁好了

# include"stdio.h"
char* myrand(int a)
{
if(a==1)
return "abc";
else if(a==2)
return "abc123";
else return NULL;
}
void main()
{
char *a;
a=myrand(1);
printf(a);
}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

# include"stdio.h"
#include
struct T{
char a[20];
};
T myrand(int a)
{
T t;
if(a==1)
strcpy(t.a, "abc");
else if(a==2)
strcpy(t.a, "123abc");
else strcpy(t.a, NULL);
return t;
}
void main()
{
T t;
t=myrand(2);
printf(t.a);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-15
直接返回一个字符串的话,返回值肯定不能设为char类型,可以用字符指针
char * myrand(int a)
{
static char b[]="abc";
static char c[]="abc123";
if(a==1)
return b;
else if(a==2)
return c;
else
return 0;
}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

那可以试下用结构体,参考三楼。

第2个回答  2012-05-15
你定义的函数myrand(int a)返回值是char类型,当你返回的是return ".....";这是不对的
应该定义为 char * myrand(int a){...}追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

追答

可以定义数组吗?
把数组作为myrand的实参数
myrand(char buf[], int a);
char buf[10];
myrand(buf, a);
把"abc"或"abc123"拷贝给buf就行了:strcpy(buf, "abc");

第3个回答  2012-05-15
不能返回字符串,就像不能返回数组一样,要返回字符指针,实际返回的是字符串首地址,函数这样声明:char * myrand(int a),然后return "abc";就行了。追问

这个返回的是指针的地址吧?我要调用的话还得定义指针来指向这个地址对吗?
我是想adams二次开发的,那个里面不能定义指针呢,无法取到这个字符串啊。。。
该怎么办呢?

第4个回答  2012-05-15
#include<stdio.h>
char* myrand(int a)
{
if(a==1)
{
return "abc";
}
if(a==2)
{
return "abc_123";
}
return " ";
}
void main()
{
char *c;
c=myrand(1);
printf("%s\n",c);
c=myrand(2);
printf("%s\n",c);
}
相似回答
大家正在搜