C语言编程:输出由键盘输入的n个字符串中最长的字符串。咋做?
1.n由键盘输入,正整数;字符串最大长度100,符号常量。输入错误提示并退出。
2.判断最长字符串由自定义函数int Longer(char **str],int n)实现,可以用strlen库函数测试字符串长度;返回最长字符串下标。
3.输入字符串应限制长度,以免溢出。
4.在主函数中输出最长字符串。 展开
代码文本:
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#define N 101
int Longer(char **str,int n){//判断串长度函数
int i,k;
for(k=0,i=1;i<n;i++)
if(strlen(str[i])>strlen(str[k]))
k=i;
return k;
}
int main(int argc,char *argv[]){
int n,i;
char **str,*q;
printf("Enter n(int n>0)...\n");
if(scanf("%d",&n)==1 && n>0){//输入字符串个数n
q=(char *)malloc(sizeof(char)*N*n);//由n申请空间
if(!q || (str=(char **)malloc(sizeof(char *)*n))==NULL){
printf("Application memory failure, exit...\n");
return 0;//申请不成功则退出
}
for(str[i=0]=q;i<n;str[i++]=q+i*N);//将空间组织成二维数组
printf("Please enter %d string(s)...\n",n);
for(i=0;i<n;scanf("%100s",str[i++]));//输入字符串
printf("\nThe longest: %s\n",str[Longer(str,n)]);//输出
free(q);//释放所申请的空间
free(str);
}
else
printf("Input error, exit...\n");//输入错误提示
return 0;
}