ulstr.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /* Assignment name : ulstr
  2. Expected files : ulstr.c
  3. Allowed functions: write
  4. --------------------------------------------------------------------------------
  5. Write a program that takes a string and reverses the case of all its letters.
  6. Other characters remain unchanged.
  7. You must display the result followed by a '\n'.
  8. If the number of arguments is not 1, the program displays '\n'.
  9. Examples :
  10. $>./ulstr "L'eSPrit nE peUt plUs pRogResSer s'Il staGne et sI peRsIsTent VAnIte et auto-justification." | cat -e
  11. l'EspRIT Ne PEuT PLuS PrOGrESsER S'iL STAgNE ET Si PErSiStENT vaNiTE ET AUTO-JUSTIFICATION.$
  12. $>./ulstr "S'enTOuRer dE sECreT eSt uN sIGnE De mAnQuE De coNNaiSSanCe. " | cat -e
  13. s'ENtoUrER De SecREt EsT Un SigNe dE MaNqUe dE COnnAIssANcE. $
  14. $>./ulstr "3:21 Ba tOut moUn ki Ka di KE m'en Ka fe fot" | cat -e
  15. 3:21 bA ToUT MOuN KI kA DI ke M'EN kA FE FOT$
  16. $>./ulstr | cat -e
  17. $ */
  18. #include <unistd.h>
  19. int main(int argc, char **argv)
  20. {
  21. int i;
  22. i = 0;
  23. if (argc == 2)
  24. while (argv[1][i])
  25. {
  26. if (argv[1][i] >= 65 && argv[1][i] <= 90)
  27. {
  28. argv[1][i] += 32;
  29. write(1, &argv[1][i], 1);
  30. }
  31. else if (argv[1][i] >= 97 && argv[1][i] <= 122)
  32. {
  33. argv[1][i] -= 32;
  34. write(1, &argv[1][i], 1);
  35. }
  36. else
  37. {
  38. write(1, &argv[1][i], 1);
  39. }
  40. i++;
  41. }
  42. return (0);
  43. }