思路:
一个一维字符数组拆成一个二维数组,二维数组看成多个一维数组。再比较二维数组中的每个一维数组的长度,初始化maxlen,把二维数组的str[0]的长度设为最大长度长度。再依次比较,找出长度最大的一维数组。
代码:
#include <stdio.h>
#include <string.h>
#define N 50
int main() {
void result(char str1[]);
char str1[N];
printf("请输入字符串:\n");
//scanf("%s",str1);
// scanf会以键盘输入空格为结束
gets(str1);
// fgets(str1,N,stdin);
result(str1);
return 0;
}
void result(char str1[]) {
int i,j,m,h,maxlen,max=0,len=strlen(str1);
char str2[N][N];
printf("字符串长度len=%d\n",len);
printf("------------\n");
for(i=0,j=0,h=0;i<=len;i++) {
if(str1[i]!=' ') {
str2[j][h]=str1[i];
h++;
}
else {
//把连续的所有空格都换成'\0',存在同一个str2[j]中,避免连续空格而新占一个str2[j]
if(str1[i+1]==' ') {
str2[j][h]='\0';
h++;
}
else {
str2[j][h]='\0';
j=j+1;
h=0;
}
}
}
maxlen=strlen(str2[0]);
for(m=0;m<=j;m++) {
int n=strlen(str2[m]);
// printf("str2[%d]=%d\n",m,n);
if(n>maxlen) {
maxlen=strlen(str2[m]);
max=m;
}
//printf("%s\n",str2[m]);
printf("strlen(str2[%d])=%d\n",m,strlen(str2[m]));
}
printf("------------\n");
printf("运行结果为:\n");
printf("%s",str2[max]);
}
运行结果: