Olufowobi Lawal schrieb am Sa, 1.11.2008:

> Now I'm trying to write a programme to convert
> lowercase to uppercase,
> 
> 
> I wrote this myself(phew! wasn't easy)
> 
> #include<stdio.h>
> main()

This was mentioned recently on the list (see for
instance message #68446):

int main(void)

<http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B>

> {
>   char lett[80];
>   int convt,i=0;
> 
>   convt='a'-'A';
>   printf("Enter the word in lowercase \n");

(As an aside, you may want to warn the user that
the max length is 79 characters.)

>   gets(lett);
> 
>  
> for(i=0;(lett[i]>='a')&&(lett[i]<='z');i++)
>   {
>       if(lett[i]==' ')
>       printf("\t");
> 
>       else lett[i]-=convt;
> 
>   }

The way you wrote the 'for' statement is
ingenious, but there's the problem, actually: the
'for' loop executes as long as the condition in
the second part between the parentheses holds.
You wrote: "loop as long as the i-th character in
the string is a lower-case letter."  As soon as it
encounters a space (or any other character outside
that range, for that matter), it exits the loop.

What you really want is to loop through *all* the
characters in the string, since you don't know a
priori where the last lower-case character is.  In
other words, you want to loop with 'i' varying
from the first index in the string to the last one
(which not necessarily will be 80).

> 
>   puts(lett);
> }

(And to be consistent with the 'main' declaration,
return a value.)

> But the problem is, after a space it doesn't
> convert to uppercase anymore, I've tried some
> logic to fix it, (thats why the if statement is
> there) but it doesn't work
> 
> I got this from the textbook I'm reading. it has
> the same problem too.
> 
> 
> #include<stdio.h>
> main()

(Same as above.)

> {
>   char str[80];
>   int i,delt='a'-'A';
>   printf("Enter a string less than 80
> characters:\n");
>   gets(str);
>   i=0;
>   while(str[i])
>   {
>     if
> ((str[i]>='a')&&(str[i]<='z'))
>   str[i]-=delt;
>   ++i;
>    }
>  printf("The entered string is (in
> uppercase):\n");
>  puts(str);
>  return 0;
> }

Does that not work for you?  It does for me.

> By the way, the compiler (or software) I use is
> SILVERFROST(/PLATO);

I've never used it.

HTH

Ignacio



      

Reply via email to