一道与指针有关的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 23:23:16
以下程序从所读入的若干字符中,找出一个最大的串,并输出该串,用”****”作为结束标记

#include <stdio.h>
#include <string.h>

void reading(char (*a)[5], int *num)
{
int i=0;
gets(a[i]);
while(!strcmp(a[i],"****")==0)
{
i++;
gets(a[i]);
}
*num=i;
}

void findmax(char (*a)[5],int num,char *max)
{
int i;
for(max=a[0],i=1;i<num;i++)
if(strcmp(a[i],max)>0)
*max=*a[i];
}

main()
{
char ss[10][5],*ps;
int n;
reading(ss,&n);
findmax(ss,n,&ps);
printf("max=%s\n",ps);
}

你是混用了指针和串的定义了,要用指针来指向保存的字符串就应该在用指针之前为指针分配指向空间。
这些你应该好好的看一下指针的应用这方面的书;
*a【5】是一个指针数组,要输入字符之前要为其分配空间。
在这个函数中要将其改为如下:
void reading(char (*a)[5], int *num)
{
int i=0;
a[i]=(char *)malloc(100*sizeof(char));
gets(a[i]);
while(!strcmp(a[i],"****")==0)
{
i++;
a[i]=(char *)malloc(100*sizeof(char));
gets(a[i]);
}
*num=i;
}
这样就可以运行了,你下一个函数也要改一改:
你的ps也是没有初始化,也是错误的,应该将其指向串中一个;