刚学C,函数返回数组和调用有点乱,帮我看看
谢谢各位大侠
代码如下
#include <stdio.h>
#include <malloc.h>
void hello();
char rk(int paa,int pkk);
////////////main/////////////
void main()
{
int a,k,pa,pk;
char b,**km1;
while (b!= 'y ')
{
printf( "请输入本科学生人数\n ");
scanf( "%d ",&a);
printf( "现在本小组有 %d 人,是否正确?(Y/N)\n ",a);
scanf( "%s ",&b);
}
b= 'n ';
while (b!= 'y ')
{
printf( "请输入本次考核科目总数\n ");
scanf( "%d ",&k);
printf( "现在本次考核共有 %d 科,是否正确?(Y/N)\n ",k);
scanf( "%s ",&b);
}
pa=a;
pk=k;
km1=rk(pa,pk);///这里的调用出不来
printf( "%s %s %s\n ",&km1[0],&km1[1],&km1[2]);
}}
///////////科目///////////
char rk(int paa,int pbb)//这个名字好像不对
{
int a=paa ,b=pkk;
printf( "本小组共 %d 人,每人有 %d 科成绩。\n ",paa,pkk);
char **km;
km=(char**)malloc(b*20*sizeof(char));//ppk hang,10 lie
for(int i=0;i <b;i++)
{
printf( "现在请分别输入 %d 门科目的第 %d 门名称\n ",b,i+1);
scanf( "%s ",&km[i]);
}
printf( "%s\n%s\n%s\n ",&km[0],km+1,km+2);
return km;//还有这里。。。
}
科目部分已经可以存入,在本函数可以正常显示,返回主函数就乱码了。。。。
帮我看看了,谢谢
[解决办法]
#include <stdio.h>
#include <malloc.h>
char** rk(int paa,int pkk);
////////////main/////////////
void main()
{
int a,k,pa,pk;
char b= 'n ',**km1;
while (b!= 'y ')
{
printf( "请输入本科学生人数\n ");
scanf( "%d ",&a);
printf( "现在本小组有 %d 人,是否正确?(Y/N)\n ",a);
scanf( "%s ",&b);
}
b= 'n ';
while (b!= 'y ')
{
printf( "请输入本次考核科目总数\n ");
scanf( "%d ",&k);
printf( "现在本次考核共有 %d 科,是否正确?(Y/N)\n ",k);
scanf( "%s ",&b);
}
pa=a;
pk=k;
km1=rk(pa,pk);
printf( "%s %s %s\n ",km1[0], km1[1], km1[2]);
}
///////////科目///////////
char** rk(int paa,int pbb)
{
int a=paa ,b=pbb;
printf( "本小组共 %d 人,每人有 %d 科成绩。\n ", paa,pbb);
char **km;
km=(char**)malloc(b*sizeof(char*));//ppk hang,10 lie
for(int i=0;i <b;i++)
{
km[i] = (char *)malloc(20 * sizeof(char));
printf( "现在请分别输入 %d 门科目的第 %d 门名称\n ",b,i+1);
scanf( "%s ",km[i]);
}
printf( "%s\n%s\n%s\n ",km[0], km[1],km[2]);
return km;
}