SHARE
TWEET

Untitled

a guest Aug 18th, 2017 150 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <malloc.h>
  4. #include <string.h>
  5.  
  6. int main(){
  7.     char* string;
  8.     char* tmpptr; //временный указатель, который пригодится если пользователь ввёл больше чисел чем сказал заранее
  9.     int n; //размер строки
  10.     int ch;//
  11.     int i; //счетчик для индекса строки
  12.     printf("Vvedite chislo simvolov v stroke: ");
  13.     scanf("%i", &n);
  14.     getchar();//чтобы отловить последний энтер
  15.     if(n <= 0) return 1;//завершаем программу если ввод неверен
  16.     string = (char*)malloc(sizeof(char) * n); //выделяем память нужного размера
  17.     i = 0;
  18.     printf("Vvedite stroku: ");
  19.     while(((ch = getchar()) != EOF) && (ch != '\n')){//пока не ввели энтер
  20.         if(i >= n){
  21.             string = (char*)realloc(string, i+1);//если текущий размер строки превышает заранее заявленный, то с каждым новым вводимым сиволом возникает необходимость
  22.                                                  //расширение памяти на место необходимое, для хранения одного симола - sizeof(char)
  23.         }          
  24.         string[i] = (char) ch;
  25.         i++;
  26.     }
  27.     if(i >= n)string = (char*)realloc(string, i+1);
  28.     string[i] = '\0';//добавляем ещё символ конца строки, перед этим расширив память если нужно
  29.     if(i >= n) printf("V processe vvoda pamyat' pod stroku byla uvelichena\n");
  30.     printf( "Vvedeno: %s\n", string);
  31.     _getch();
  32.     return 0;
  33. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top