法一:
#include <string.h>
#include <stdio.h>
void longestword(char* str[] , int a ,int j )
{
char* op = str[0]; 由于op存放地址,则*op
int i = 0;
for( i = 1 ; i < j ; i++ )
{
if( a < strlen(str[i]))
{
a = strlen(str[i]);
op = str[i]; op存放最长单词的地址
}
}
printf("Output:\n");
printf("The longest word is :%s\n",op);
}
int main()
{
char arr[50] = {'\0'};
int i = 0;
int a = 0;
char *op;
int j = 0;
char* str[20];
printf("Please input a sentence:\n");
gets(arr);
str[i] = strtok( arr , " " ); str字符数组存放为分解arr之后的单词的地址
while( str[i] != NULL )
{
i++;
str[i] = strtok( NULL , " " );
j++; j代表单词的个数
}
a = strlen(str[0]);
longestword( str , a ,j);
return 0;
} //将字符串中每个单词取出来
法二:
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0;
char arr[128] = { '\0' };
char* str[128] = { '\0'};
int j = 0;
char* temp;
int k = 0;
int z = 0;
gets(arr);
str[z] = strtok(arr," ");
while( str[z] != NULL )
{
z++;
str[z] = strtok(NULL," ");
}
for( i = 0 ;i < z ; i++)
{
for(j = 0 ;j < z - i - 1 ;j++)
{
if( strlen(str[j]) > strlen(str[j+1]))
{
temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
printf("%s\n",str[z-1]);
return 0;
}