PDA

View Full Version : مبتدی: uppercase



moniex
جمعه 07 دی 1397, 15:50 عصر
سلام من يك برنامه به زبان c ميخواستم كه تعدادي اسم به ورودي بدهد و در خروجي حرف اول آن بزرگ و بقيه حروف كوچك چاپ شود مثلا ورودي:rEd hoOd
خروجي:Red Hood

farhad_shiri_ex
شنبه 08 دی 1397, 09:58 صبح
سلام من يك برنامه به زبان c ميخواستم كه تعدادي اسم به ورودي بدهد و در خروجي حرف اول آن بزرگ و بقيه حروف كوچك چاپ شود مثلا ورودي:rEd hoOd
خروجي:Red Hood


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

/* use bit vector mask */
char toLower(char c){
return c ^ 0b00100000;
}
char toUpper(char c){
return c | 0b00100000;
}
/* use ctype library */
/*int toLower(int c){
return tolower(c);
}
int toUpper(int c){
return toupper(c);
}*/


int main()
{

char* strArray[3]={"rEd hoOd" , "aLi amIri" , "clINt estwOOD"};

int j;
for(j=0 ; j < 3 ; j++){
char* n1 = *(strArray+j);
char* n2 = malloc(strlen(n1)*sizeof(char));
memset(n2 , 0 ,strlen(n1)*sizeof(char));
int i;
char tmp;
printf("%s -> ",n1);
for(i =0; i < strlen(n1) ; i++){
if(i==0){
tmp = toLower(*(n1+i));//*(n1+i) ^ 0b00100000;
} else if(*(n1+i) == 0x20){
tmp = *(n1+i);
*(n2 + i++) = tmp;
tmp = toLower(*(n1+i)); //*(n1+i) ^ 0b00100000;
} else {
tmp = toUpper(*(n1+i)) ;//*(n1+i) | 0b00100000;
}
*(n2+i) = tmp;
}
*(n2 + strlen(n1)) = '\0';
printf("%s \n", n2 );
free(*(strArray+j));
free(n1);
free(n2);
}
return 0;
}