Нарушение прав доступа при чтении - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Список.

Не могу разобраться с двумя функциями, компилятор не находит синтаксических ошибок, а во время тестирования программки, вылазиет ошибка, названная в заголовке темы.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct Item
{
 char data;
 struct Item *next;
}Item;
Item* reorg(Item*);//функция изменения строки
Item* enter_Item(char*);//функция ввода данных в список
char* ent_str();//функция ввода строки 
void print_sp(Item*);
    
    int main()
{
    Item *spisok;//объявление списка
    char* stroka=ent_str();
    spisok=enter_Item(stroka);//переделать строку в список
    print_sp(spisok);//вывести список на экран
    getch();
    return 0;
} 
Item* enter_Item(char *stroka)
    {
        Item *head, *last;
        int i=0;
        Item curr={stroka[i], NULL};
        last=&curr;
        head=last;
        do
        {
            i++;
            last->next=(Item*)malloc(sizeof(Item));
            last=last->next;
            last->next=NULL;
            last->data=stroka[i];
        }while (stroka[i]!=NULL);
        return head;
    }
    void print_sp(Item *spisok)
    {
            while(spisok!=NULL)
            {
                printf("%c", spisok->data);
                spisok=spisok->next;
            };
            
    }
я пробовала поставить функцию void print_sp(Item *spisok) в функцию Item* enter_Item(char *stroka) и список спокойно выводился на экран, почему не получается проделать тоже самое через главную функцию?

Решение задачи: «Нарушение прав доступа при чтении»

textual
Листинг программы
Item curr={stroka[i], NULL};
last=&curr;

Объяснение кода листинга программы

В данном коде выполняется следующие действия:

  1. Создается новый элемент списка - curr.
  2. Значение нового элемента списка - curr, инициализируется как stroka[i], что предполагает, что stroka является массивом строк.
  3. Указатель last инициализируется как адрес нового элемента списка - curr. Таким образом, код создает новый элемент списка и указывает на него указатель last, что предполагает, что last является концом списка. Предполагается, что данная программа будет работать с динамическим списком, где каждый элемент - это структура данных, содержащая строку и указатель на следующий элемент списка. Важно отметить, что код не содержит никаких проверок на ошибки или обработку исключений, поэтому предполагается, что он будет выполняться в контролируемой среде без возможности сбоев или ошибок.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы