Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati program na programskom jeziku C koji
- učitava dva znakovna niza, izvrši nadovezivanje
- drugog na prvi, okrene "naopako" dobijeni niz i
- ispiše ga na standardnom izlaznom uređaju.*/
- #include <stdio.h>
- #include <string.h>
- void main() {
- int n;
- char c, *d, *p, *prvi, *drugi;
- printf("Maksimalna duzina: ");
- scanf("%d\n", &n);
- p = calloc(2*n+1, sizeof(char)) ;
- d = calloc(n+1, sizeof(char));
- if ((NULL == d) || (NULL == p))
- printf("Nije moguca alokacija!\n");
- else {
- prvi = p; drugi = d;
- while ((*p = getchar()) != ‘\n’) p++;
- *p = ‘\0’;
- while ((*d = getchar()) != ‘\n’) d++;
- *d = ‘\0’;
- p = prvi; d = drugi;
- /* konkatenacija */
- while (*p) p++;
- while (*p++=*d++);
- /* okretanje */
- p = prvi;
- for (d=p+(strlen(p)-1); p < d; p++, d--)
- c=*p, *p=*d, *d=c;
- printf(“%s\n”, prvi);
- free(prvi); free(drugi);
- }
- }
- /*komentar
- • Za string p se alocira dvostruko više memorije
- zbog nadovezivanja stringova
- – alocira se 2n+1 elemenata niza, jer je potrebno alocirati i jedan dodatni
- element za terminalni simbol
- • Učitavanje stringova se vrši znak po znak,
- korišćenjem bibliotečke funkcije getchar(), sve
- dok se ne učita znak za kraj reda ‘\n’
- • Obrtanje dobijenog stringa se vrši poznatim
- algoritmom, ali se vodi računa da se ne pomeri
- završni znak
- Samu konkatenaciju (nadovezivanje) stringova je moguće
- izvršiti pomoću bibliotečke funkcije strcat(t,s) koja
- nadovezuje string s na string t uz ispravno postavljanje
- završnog znaka
- • Deo koda:
- while (*p) p++;
- while (*p++=*d++);
- – prva petlja pomera pokazivač p tako da ukazuje na mesto završnog znaka prvog
- stringa
- – druga petlja prepisuje sadržaj drugog stringa na kraj prvog, uz prepisivanje
- završnog znaka, kada se ciklus zaustavlja
- • bi trebalo zameniti sa pozivom:
- strcat(p,d);
- • Takođe, petlju while (*p++=*d++) u gornjem bloku je
- moguće zameniti pozivom funkcije strcpy(t,s) koja kopira
- sadržaj stringa na koji ukazuje pokazivač s na mesto u
- memoriji na koje ukazuje pokazivač t:
- strcpy(p,d);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement