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
