Advertisement
KvArt

Funkcija za ucitavanje reci iz texta u stringove

Jul 12th, 2022
872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. /*• Napisati funkciju char** load_words() koja
  2. učitava jedan red teksta sa standardnog ulaza i
  3. smešta ga kao niz reči koji vraća kao rezultat. Red
  4. se sastoji samo od reči i tačno jednog blanko
  5. znaka između svake dve susedne reči. Na
  6. početku, kao i na kraju reda su reči. Za učitavanje
  7. teksta je potrebno dinamički alocirati prostor
  8. tako da se tekst smesti kao niz reči. Smatrati da
  9. reč ima najviše 100 znakova. Na kraju izvršavanja
  10. prethodne funkcije treba da bude alocirano tačno
  11. onoliko prostora koliko je potrebno da se smeste
  12. učitane reči.*/
  13.  
  14. #include <stdlib.h>
  15. #define WORD_LEN 100
  16. char** load_words() {
  17. char c, **words = NULL;
  18. int wordCnt = 0, wordStart = 1, pos;
  19. while(1) {
  20. c = getchar();
  21. if(c == '\n' && !wordCnt) break;
  22. if(wordStart) {
  23. words = realloc(words,
  24. sizeof(*words) * (++wordCnt + 1));
  25. if(!words) {
  26. perror(NULL); exit(EXIT_FAILURE);
  27. }
  28. words[wordCnt - 1] =
  29. calloc(sizeof(**words), (WORD_LEN + 1));
  30. if(!words[wordCnt - 1]) {
  31. perror(NULL); exit(EXIT_FAILURE);
  32. }
  33. words[wordCnt] = NULL;
  34. wordStart = 0; pos = 0;
  35. }
  36. words[wordCnt - 1][pos++] = c;
  37. if(c == ' ' || c == '\n') {
  38. words[wordCnt - 1] =
  39. realloc(words[wordCnt - 1],
  40. sizeof(**words) * pos);
  41. words[wordCnt - 1][pos-1] = '\0';
  42. wordStart = 1;
  43. if(c == '\n') break;
  44. }
  45. }
  46. return words;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement