w3resource

C Programming: Find the largest and smallest word in a string


20. Largest and Smallest Word

Write a program in C to find the largest and smallest words in a string.

C Programming: Find the largest and  smallest word in a string


Sample Solution:

C Code:

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

int main() {
    char str[100], word[20], mx[20], mn[20], c; // Declare character arrays and variables
    int i = 0, j = 0, flg = 0; // Initialize variables for iteration and flags
	
    printf("\n\nFind the largest and smallest word in a string :\n");
    printf("-----------------------------------------------------\n");
    printf("Input the string : ");
    i = 0;
    while ((c = getchar()) != '\n' && i < sizeof(str) - 1) { // Read character by character until newline or end of array
        if (isalnum(c) || isspace(c)) { // Check for alphanumeric characters and spaces
            str[i++] = c; // Store characters in str array
        }
    }
    str[i] = '\0'; // Terminate the string with null character
    // Loop through the input string to find the largest and smallest words
    for (i = 0; i < strlen(str); i++) {
        while (i < strlen(str) && !isspace(str[i]) && isalnum(str[i])) { // Check for alphanumeric characters
            word[j++] = str[i++]; // Store characters in word array until a space or non-alphanumeric character is found
        }
        if (j != 0) { // Check if there's a word
            word[j] = '\0'; // Terminate the word with null character
            if (!flg) { // Check if it's the first word encountered
                flg = !flg; // Set flag to indicate the first word
                strcpy(mx, word); // Copy the first word to both mx (max) and mn (min)
                strcpy(mn, word);
            }
            if (strlen(word) > strlen(mx)) { // Compare word lengths to find the maximum
                strcpy(mx, word); // Update mx if the current word is longer
            }
            if (strlen(word) < strlen(mn)) { // Compare word lengths to find the minimum
                strcpy(mn, word); // Update mn if the current word is shorter
            }
            j = 0; // Reset word index for the next word
        }
    }
    // Display the largest and smallest words found in the input string
    printf("The largest word is '%s' \nand the smallest word is '%s' \nin the string: '%s'.\n", mx, mn, str);
	
    return 0; // Return 0 to indicate successful execution of the program
}

Output:

Find the largest and  smallest word in a string :                                                                             
-----------------------------------------------------                                                                         
Input the string : It is a string with smallest and largest word.                                                              
The largest word is 'smallest'                                                                                                
and the smallest word is 'a'                                                                                                  
in the string : 'It is a string with smallest and largest word'.

Flowchart:

Flowchart: Find the largest and  smallest word in a string


For more Practice: Solve these Related Problems:

  • Write a C program to identify the longest and shortest words in a sentence and display their lengths.
  • Write a C program to extract the largest and smallest words from a string and print them with their indices.
  • Write a C program to sort all words in a sentence by length and then display the smallest and largest.
  • Write a C program to find the longest word starting with a vowel and the shortest word starting with a consonant.

Go to:


PREV : Concatenate Strings Manually.
NEXT : Convert String to Uppercase.

C Programming Code Editor:



Improve this sample solution and post your code through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.