File: Stare vježbe/vjezbe06/40__rad_sa_stringovima_2.c

  1. /*
  2.   40__rad_sa_stringovima_2.c
  3.   Primjer jednostavnog baratanja sa stringovima
  4.   -----
  5.   Program sva slova unesenog stringa pretvara u mala, odnosno velika slova
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. /* u ctype.h nalazi se deklaracija funkcije toupper */
  11. #include <ctype.h>
  12.  
  13. /* maksimalna duljina linije teksta koja ce se unositi */
  14. #define DUZINA 30
  15.  
  16. /* Napomena: primijetimo da unutar funkcije getline mijenjamo vrijednosti
  17.   elemenata polja linija[]. To cemo preciznije moci objasniti kada cemo
  18.   uciti pointere */
  19. int getline(char linija[], int duz)
  20. {
  21. int c,i;
  22.  
  23. i=0;
  24. while(--duz >0 && (c=getchar()) != EOF && c != '\n')
  25. linija[i++]=c;
  26.  
  27. linija[i]='\0';
  28.  
  29. return i;
  30.  
  31. }
  32.  
  33. /* funkcija za pretvaranje velikog u malo slovo
  34. (u ctype.h postoji ekvivalentna funkcija tolower) */
  35. int u_mala(int c)
  36. {
  37. if (c >= 'A' && c <= 'Z')
  38. return c + 'a' - 'A';
  39. else
  40. return c;
  41. }
  42.  
  43. int main()
  44. {
  45. char linija[DUZINA], velika[DUZINA], mala[DUZINA];
  46. int i, br_znakova;
  47. printf("Unesite liniju:\n");
  48. br_znakova=getline(linija, DUZINA);
  49.  
  50. printf("\nLinija koju ste unijeli ima %d znakova (racunajuci praznine).\n",
  51. br_znakova);
  52. i=0;
  53. while ((linija[i] != '\0') && (i <= DUZINA)) {
  54. velika[i]=toupper(linija[i]);
  55. mala[i]=u_mala(linija[i]);
  56. ++i;
  57. }
  58. velika[i]='\0';
  59. mala[i]='\0';
  60.  
  61. printf("Mala slova: %s\n", mala);
  62. printf("Velika slova: %s\n", velika);
  63. /* ispisujemo prvih i/2 znakova */
  64. printf("Velika slova (prva polovica): %.*s\n", i/2, velika);
  65.  
  66. return 0;
  67. }
  68.