Advertisement
dllbridge

malloc(), realloc()

Jul 16th, 2020
1,463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.66 KB | None | 0 0
  1.  
  2.  
  3. #include  <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <locale.h>
  7.  
  8. int       n   =  0,
  9.         pos   =  0,
  10.         size  = 11;
  11.  
  12. char      *psz = 0,
  13.            sz[100];
  14.  
  15. void        Init();  
  16. int       ReSize();
  17.  
  18. ///////////////////////////////////////////////////////////////
  19. int main()                                                   //
  20. {
  21.  
  22.     Init();
  23.    
  24. L_01: printf("введите слово: "); scanf("%s", sz);
  25.        
  26.       n = strlen(sz);  
  27.    
  28.       if(pos + n >= size)
  29.       {
  30.          if(ReSize() == -1) return 0;
  31.       }
  32.      
  33.       strcpy(&psz[pos], sz); pos += n;
  34.    
  35.       printf("размер введённого слова = %d байтам, позиция для нового слова = %d\n", n, pos);  
  36.       printf("%s\n", psz);
  37.       goto L_01;
  38.        
  39. return 0;
  40. }
  41.  
  42. ///////////////////////////////////////////////////////////////
  43. void Init()                                                  //
  44. {
  45.    
  46.      setlocale(LC_ALL, "Rus");
  47.      
  48.      psz = (char*)malloc(size);
  49.    
  50.      printf("Первоначально выделен буфер psz, начиная с адреса: %d\n", psz);
  51.      printf("Размер буфера psz пока равен (свободно) %d-ти байтам.\n", size);     
  52. }
  53.  
  54. ///////////////////////////////////////////////////////////////
  55. int ReSize()                                                 //
  56. {
  57.    
  58.      size += 11;
  59.    
  60.      psz = (char*)realloc(psz, size);
  61.    
  62.      if(psz == 0) { printf("ERROR !!! Почему-то realloc вернул 0\n"); return -1; }
  63.    
  64.      printf(".......Новый буфер, начиная с адреса: %d, размер = %d байтам.......\n", psz, size);
  65.      
  66. return 0;    
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement