#include <stdio.h>
#include<conio.h>
struct sj
{
int c;
int k;
int g;
}pp;
int *pd(int,int,int);
main()
{
char *k;
printf("请输入三角形第一条边:");
scanf("%d",pp.c);
printf("\n请输入三角形第二条边:");
scanf("%d",pp.k);
printf("\n请输入三角形第三条边:");
scanf("%d",pp.g);
k=pd(pp.c,pp.k,pp.g);
printf("此三角形为:%s",k);
getch();
}
int *pd(int a,int b,int c)
{
char dd[50];
if(a==b==c)
dd[50]="等边三角形";
else if(a==b||b==c||a==c)
dd[50]="等腰三角形";
else dd[50]="不等边三角形";
return dd;
}
程序仅供参考,请问一个函数如何才能返回字符串并让主函数接收啊?谢谢
C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式:
函数形参带进来的地址
静态局部变量地址
局部变量地址,必须在函数中用malloc()函数进行地址分配
采用全局变量地址
参考代码:
void func1( char *s ) //通过形参返回字符串
{
strcpy( s, "hello");
}
char * func1_1( char *s ) //另一种写法
{
strcpy( s, "hello");
return s ; //返回形参地址,方便程序调用
}
char * func2( void )
{
static char s[100]; //不能是非静态变量,否则,子函数结束,局部变量被释放,调用者得到一个无效的地址值。
strcpy( s, "hello");
return s ; //返回静态局部变量地址,由调用者采用相应的指针变量接收返回值,得到字符串数据。
}
char * func3( void )
{
char *s ;
s=(char *)malloc( 100 );
strcpy( s, "hello");
return s ; //返回s值,该地址需要调用者去free()释放。
}
//定义全局变量
char globle_buf[100];
void func4( void )
{
strcpy( globle_buf, "hello");
}
char * func4_1( char *s ) //另一种写法
{
strcpy( globle_buf, "hello");
return globle_buf ; //返回全局变量地址,方便程序调用
}