Home > Mobile >  C Programme has stopped working while uppercase the Word
C Programme has stopped working while uppercase the Word

Time:07-29

This code is not returning Uppercase Word rather it stops working.Here is the code.Where have I made mistake?

char Uppercase(char country[]){
    
        int i;
        for(i=0;i<100;i  ){
            if(country[i]>=97 && country[i]<=122){
    
                country[i] = 'A' (country[i]-'a');
            }
        }

    return country;
}

int main(){
    char country[100];
    printf("Enter The Country Name: ");
    scanf("%s",country);

    char x = Uppercase(country);
    printf("Uppercase is: %s",x);


}

CodePudding user response:

Better use standard functions not magic numbers:

char *strtoupper(char *str)
{
    char *wrk = str;
    while(*str)
    {
        *str = toupper((unsigned char)*str);
        str  ;
    }
    return wrk;
}

CodePudding user response:

You declared the variable x as having the type char and trying to output it using the conversion specifier %s designed to output strings instead of a single character.

char x = Uppercase(country);
printf("Uppercase is: %s",x);

that results in undefined behavior.

And the return type char of the function Uppercase

char Uppercase(char country[]){
    
        int i;
        for(i=0;i<100;i  ){
            if(country[i]>=97 && country[i]<=122){
    
                country[i] = 'A' (country[i]-'a');
            }
        }

    return country;
}

does not make a sense. Moreover the compiler should issue a message for this return statement

    return country;

The return type of the function must be the pointer type char *.

Also this for loop with the magic number 100

        for(i=0;i<100;i  ){

does not make a sense. The passed array can have a string that contains much less characters than 100.

And using magic numbers like 97 and 122 makes the code unreadable and error prone.

if(country[i]>=97 && country[i]<=122){

AT least you could write

if(country[i] >= 'a' && country[i] <= 'z'){

The function can be defined for example the following way

#include <ctype.h>

//...

char * Uppercase( char country[] )
{
    for ( char *s = country; *s;   s )
    {
        *s = toupper( ( unsigned char ) *s );
    }

    return country;
}
  • Related