急求C语言找错指导!!!!!(返回字符串的函数问题)
来源:百度知道 编辑:UC知道 时间:2024/05/27 12:22:23
#include"stdio.h"
char* fun(int num1)
{
char *string1,*string2;
char str1[5]="yes",str2[5]="no";
int num;
*string1=str1;
*string2=str2;
num=num1/2;
if(num*2==num1)
return string1;
else
return string2;
}
main()
{
int num2;
char *result;
clrscr();
printf("please input a integer:");
scanf("%d",&num2);
result=fun(num2);
printf("%s",result);
sleep(5);
}
哪位帮忙找下错在哪里,运行后出现乱码!
char* fun(int num1)
{
char *string1,*string2;
char str1[5]="yes",str2[5]="no";
int num;
*string1=str1;
*string2=str2;
num=num1/2;
if(num*2==num1)
return string1;
else
return string2;
}
main()
{
int num2;
char *result;
clrscr();
printf("please input a integer:");
scanf("%d",&num2);
result=fun(num2);
printf("%s",result);
sleep(5);
}
哪位帮忙找下错在哪里,运行后出现乱码!
第一处错误
*string1=str1;
*string2=str2;
/* *string1和*string2是指向这个地址的数据 */
应改称
string1=str1; //把str1字符串的地址赋给string1指针。
string2=str2; //同上
#########################################
第二出错误
char str1[5]="yes",str2[5]="no";
这些应该在函数外定义,作为全局变量来使用才可以
因为在C语言中函数内的局部变量在函数结束时销毁,
所以string1返回的地址里的字符串已经失效了,
所以返回乱码,你也可以定义成静态变量别让它消失。
可以如下定义,也可以在函数外定义
static char str1[]="yes";
static char str2[]="no";
######################################3
给你完整代码
#include<stdio.h>
char* fun(int num1)
{
char *string1,*string2;
static char str1[]="yes";
static char str2[]="no";
int num;
string1=str1;
string2=str2;
num=num1/2;
if(num*2==num1)
return string1;
else
return string2;
}
void main()