-
16.05.2014, 06:44 #1
- Регистрация
- 16.05.2014
- Возраст
- 34
- Сообщений
- 2
- Поблагодарили
- 0
- Поблагодарил
- 1
Программирование в Си
Добрый день,
Подскажите пожалуйста только недавно начали Си изучать и нам дали такое задание: Считать строку любой длины с клавиатуры и переделать ее в массив с динамическим выделением памяти, вот код который я написала, ошибки он не выдает, но я не знаю правильно ли он работает?, и можно ли таким способом выделить память?
Код:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char *S; int *p, i; int t = 20; printf("Введите предложение"); gets(S); // считываю предложение p = (char*)malloc(strlen(S)+1);// выделяю память if(!p) //проверяю есть ли свободная память printf("Невозможно выделить память"); return 1; char tab[*p]; //создаю массив strcpy(tab[i],S); //копирую строку в массив system("PAUSE"); return 0; }
-
16.05.2014, 07:46 #2
- Регистрация
- 12.05.2012
- Сообщений
- 1,533
- Поблагодарили
- 578
- Поблагодарил
- 1662
Думаю, что лучшее место для таких вопросов тут
Здесь ваша программа закончится в любом случае и с ошибкой
Что за переменная i ? Чему равно её значение и вообще, зачем она?Последний раз редактировалось RW4O; 16.05.2014 в 07:53.
73! Андрей (ex RW4NY) R120RF Team
-
16.05.2014, 08:29 #3
- Регистрация
- 12.05.2012
- Сообщений
- 1,533
- Поблагодарили
- 578
- Поблагодарил
- 1662
Мой вариант
Код:#include <stdio.h> #include <stdlib.h> #ibclude <string.h> int main(int argc, char *argv[]) { char *S,*p; printf("Введите предложение"); gets(S); // считываю предложение p = (char*)malloc(strlen(S)+1);// выделение памяти if(!p) { //проверяю есть ли свободная память printf("Невозможно выделить память"); return 1; } strcpy(p,S); //копирую строку в массив printf(p); //вывод содержимого динамического массива free(p); //освобождение памяти return 0; }
73! Андрей (ex RW4NY) R120RF Team
-
16.05.2014, 22:08 #4
- Регистрация
- 16.05.2014
- Возраст
- 34
- Сообщений
- 2
- Поблагодарили
- 0
- Поблагодарил
- 1
Спасибо Вам что ответили, я попыталась скомпилировать Ваш код но компилятор зависает, не пойму в чем проблема
Natka
-
16.05.2014, 22:15 #5
- Регистрация
- 18.01.2003
- Адрес
- Кишинёв
- Возраст
- 53
- Сообщений
- 4,653
- Поблагодарили
- 1976
- Поблагодарил
- 8522
-
17.05.2014, 08:09 #6
- Регистрация
- 12.05.2012
- Сообщений
- 1,533
- Поблагодарили
- 578
- Поблагодарил
- 1662
Natka
Каким компилятором польхуетесь?
Исправленный вариант
Код:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char S[256],*p; printf("Введите предложение\n"); gets(S); // считываю предложение p = (char*)malloc(strlen(S)+1);// выделение памяти if(!p) { //проверяю есть ли свободная память printf("Невозможно выделить память"); return 1; } strcpy(p,S); //копирую строку в массив printf(p); //вывод содержимого динамического массива free(p); //освобождение памяти return 0; }
Последний раз редактировалось RW4O; 17.05.2014 в 08:12.
73! Андрей (ex RW4NY) R120RF Team
|
Социальные закладки