写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址

有很多版本,主要是我这个有**max,给出了形参传回地址!!
#include <stdio.h>
#include <string.h>

void fun(char(*a)[81],int num,char **max)
{int i,k=0;

max=a[0];
for(i=0;i<num;i++)
{if(strlen(max)<strlen(a[i]))
*max=a[i];
}

}

main()
{
char ss[10][81],*ps;
int n,i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss,n,&ps);
printf("\nmax=%s\n",ps);
NONO();
}

NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char ss[20][81],*ps;
int n,i=0;
FILE *rf, *wf ;

rf = fopen("C:\\k01\\24010001\\in.dat","r") ;
wf = fopen("C:\\k01\\24010001\\out.dat","w") ;
fgets(ss[i], 81, rf);
while(!strncmp(ss[i],"****",4)==0)
{
i++;
fgets(ss[i], 81, rf);
}
n=i;
fun(ss,n,&ps);
fprintf(wf, "%s",ps);
fclose(rf) ;
fclose(wf) ;
}
我这个没有结果!

fun函数写得有问题,下面是修改的
void fun(char(*a)[81],int num,char **max)
{
int i,k=0;
*max=a[0];
for(i=0;i<num;i++)
if(strlen(*max)<strlen(a[i]))
*max=a[i];
}
另外循环条件写得很奇怪,用while(strcmp(ss[i],"****")!=0)就可以了追问

只修改 fun函数,,,,修改好i后 没有运行的结果。。

追答

你说的运行结果是什么,显示在控制台的黑色窗口里面的吗?你的程序会先要从控制台输入一系列字符串然后直接显示一个结果,然后会读取C:\k01\24010001\in.dat文件并把结果输出到out.dat里面,我运行以后两个结果都有。
请描述一下你运行以后是怎么输入的,现象是什么,in.dat里面内容是什么

温馨提示:答案为网友推荐,仅供参考