斯容整容视频:C语言中函数如何返回字符串?

来源:百度文库 编辑:高考问答 时间:2024/04/29 03:18:37
#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;
}
程序仅供参考,请问一个函数如何才能返回字符串并让主函数接收啊?谢谢

你的程序错误百出,如果我没有猜错的话,你是判断三角形是等边,等腰还是不等边。但你的程序在主程序中是要求输入三边,从严密性来讲,需要判断三边是否能构成三角形后再调用函数来判断为何种三角形。
第二,在函数中
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;
里面dd[50]="等边三角形"; 这种情况的出现,建议楼主仔细在书中找找,看哪本C语言书里有这种表示方法,你需要使用strcpy(dd,"等边三角形“),在头文件上要加上#include<string.h>,这种方式来表示。
第三,dd是地址,不是指针,传回去是没有用的,要不在函数内定义一个字符型指针char *p,把DD的地址给它,再return p;
第四,函数返回的指针应该是char,在声明函数和定义函数处改成char
第五,在主程序中scanf()里对%d的输入请加上地址符号&

C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式:

  1. 函数形参带进来的地址

  2. 静态局部变量地址

  3. 局部变量地址,必须在函数中用malloc()函数进行地址分配

  4. 采用全局变量地址

参考代码:

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 ; //返回全局变量地址,方便程序调用

}

让一个函数返回字符串,让主函数接收使用,有几种方法:

1.通过函数的参数指定一个指针,然后在函数体内对指针赋值。
如:char temp[10];
void func(char *t)
{
strcpy(t, "test");
}
func(temp);即可

2.通过返回值
如:char* func()
{
char *temp = new char[5];
strcpy(temp, "test");
return temp;
}

char *me=func();即可

用树组传递 或者指针
比如你在所有语句之前定义一个树组,他就是全局变量,你可以在
主函数和子函数里面对其进行操作。
还有什么问题
QQ 283908537

返回数组的首元素指针。