Самое короткое слово в строке

yrtimd

Написать программу, которая будет находить самое короткое слово в строке, введенной с клавиатуры.
2 ответа

yrtimd

если разделители кроме пробела сами усложняйте
void main(int argc,char* argv[])
{   
    char w[200],s[200]="Бразды пушистые взрывая летит кибитка удалая";
    char *p1,*p2;
    int min,l;
    
    setlocale(LC_ALL,"Rus");
    //gets(s);
    min=strlen(s)+1;
    p1=s;
    while(p2=strchr(p1,' '))
    {
        *p2=0;
        if(*p1)
        {
            l=strlen(p1);
            if(min>l)
            {
                strcpy(w,p1);
                min=l;
            }
            printf("%s\n",p1);
        }
        p1=p2+1;
    }
    if(*p1)
    {
        l=strlen(p1);
        if(min>l)
        {
            strcpy(w,p1);
            min=l;
        }
        printf("%s\n",p1);
    }
    printf("\n%s\n",w);
    system("pause");
}


yrtimd

#include <stdio.h>
#include <string.h>
 
char * shortest_word(char * str, const char * delim) {
    if ( ( str = strtok(str, delim) ) != NULL ) {
        char * next = shortest_word(NULL, delim);
        
        return ( next && strlen(next) < strlen(str) ) ? next : str;
    }
    else
        return NULL;
}
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("First shortest word: %s\n", shortest_word(buf, DELIM));
        
    return 0;
}