Выделение памяти под структуру - C (СИ) (76756)
Формулировка задачи:
Здравствуйте! Задача - написать модуль для работы со строками. Структуру менять нельзя, можно редактировать только функции. Я закосячил при выделении памяти, только вот как - не пойму...
Для одной строки всё работает, но вот для двух - не желает
Вот код main:
Помогите, пожалуйста)
#include <malloc.h> #include <string.h> #include <stdio.h> //const ...; // Определение исключительных ситуаций typedef struct { char *s; // Указатель на строку unsigned max; /* Максимальное количество символов в строке, определяющееся при инициализации*/ unsigned N; // Динамическая (текущая) длина строки } str; typedef str *string1; void InitStr(string1 st, unsigned n) { st=(string1)malloc(sizeof(str)); st->s=(char*)malloc(n); st->max=n; st->N=0; } void InputStr(string1 st) { unsigned i=0; char c; c=getchar(); while (c!=10) { puts("TYT"); st->s[i++]=c; // ошибка здесь puts("AGA"); c=getchar(); } st->N=i; } void OutputStr(string1 st) { unsigned i; for (i=0;i<st->N;++i) putchar(st->s[i]); putchar('\n'); } void DoneStr(string1 s) { //free(s->s); Предполагается, но не работает :{ free(s); }
#include <stdio.h> #include <stdlib.h> #include "format5.h" #define N 255 int main() { string1 s,Subs; InitStr(s,N); InitStr(Subs,N); puts("POH"); InputStr(s); puts("HOP"); //Copy(s,3,5,Subs); //Delete(s,3,5); //OutputStr(s); //Insert(Subs,s,3); //OutputStr(s); DoneStr(Subs); DoneStr(s); return 0; }
Решение задачи: «Выделение памяти под структуру»
textual
Листинг программы
int main() { //... str st; InitStr(&st); //... }
Объяснение кода листинга программы
- В функции main() выполняется следующее действие:
- Создается переменная типа int с именем st, которая будет использоваться для хранения структуры str.
- Инициализируется функция InitStr(), которая будет использоваться для инициализации структуры str.
- Далее в функции main() выполняется действие:
- Вызывается функция InitStr() с передачей переменной st в качестве аргумента.
- Эта функция инициализирует структуру str, выделяя память под ее поля.
- После выполнения функции InitStr() переменная st будет содержать инициализированную структуру str, и можно приступать к ее использованию в программе.
- В данном коде нет других действий, которые могут быть выполнены в функции main().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д