• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dynamiczna tablica Struktury BŁĄD język C

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 19 kwietnia 2021 w C i C++ przez MrChick888 Obywatel (1,020 p.)
zamknięte 19 kwietnia 2021 przez MrChick888

Witam mam pytanie, dostałem od profesora takie zadanie

Zadanie zaawansowane. Zadanie 1 wykonać tworząc strukturę student, która zawiera nazwisko,
imię, rok urodzenia oraz ocenę studenta. Stworzyć tablicę studentów, alokując pamięć dynamicznie
dla podanej z monitora liczby studentów. Funkcje my_inp, my_outpt powinni obsługiwać każdy
element tej tablicy.

Wiem, ze duzo lepiej sprawdził by się do tego vector lub lista w C++, ale czysto treningowo chciałem to zrobić i w trakcie pisania pojawił się błąd, którego nie umiem rozwiązać. Jest mi ktoś w stanie coś poradzić

KOD:

#include <stdio.h>
#include <Windows.h>

#define MAX 256

struct Student
{
	char imie[MAX];
	char nazwisko[MAX];
	int rok_urodzenia;
	double ocena;
};

int main()
{
	int ile;
	printf("Ile studentow dodac: ");
	scanf_s("%d", &ile);

	struct Student* tab = NULL;
	tab = (struct Student*)malloc(ile * sizeof(struct Student));

	for (int i = 0; i < ile; i++)
	{
		tab.imie = "Piotr";//TUTAJ POJAWIA SIĘ BŁĄD "E0153"
	}

	system("PAUSE");
	return 0;
}

 

komentarz zamknięcia: rozwiązane

1 odpowiedź

+2 głosów
odpowiedź 19 kwietnia 2021 przez profesorek96 Szeryf (91,420 p.)
wybrane 19 kwietnia 2021 przez MrChick888
 
Najlepsza

Twój błąd polega na tym że nie możesz tak sobie przypisać do tablicy napisu. Musisz skopiować napis, do tego służy funkcja strcpy z biblioteki string.h. Kolejna spraw, struktura tworzona jest dynamicznie, czyli do każdego z elementów składowych odwołujemy się za pomocą operatora strzałki a nie kropki. Twój kod powinien wyglądać:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//#include <Windows.h>
 
#define MAX 256
 
struct Student
{
    char imie[MAX];
    char nazwisko[MAX];
    int rok_urodzenia;
    double ocena;
};
 
int main()
{
    int ile;
    printf("Ile studentow dodac: ");
    scanf_s("%d", &ile);
 
    struct Student* tab = NULL;
    tab = (struct Student*)malloc(ile * sizeof(struct Student));
 
    for (int i = 0; i < ile; i++)
    {
        //tab->imie = "Piotr";//TUTAJ POJAWIA SIĘ BŁĄD "E0153"
        strcpy(tab->imie,"Piotr");
    }
 
    system("PAUSE");
    return 0;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 870 wizyt
0 głosów
1 odpowiedź 574 wizyt
pytanie zadane 19 listopada 2018 w C i C++ przez Roman1212 Początkujący (460 p.)
0 głosów
1 odpowiedź 292 wizyt
pytanie zadane 7 kwietnia 2023 w C i C++ przez Zuzan Początkujący (390 p.)

92,698 zapytań

141,613 odpowiedzi

320,139 komentarzy

62,058 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...