• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
184 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 1,022 wizyt
0 głosów
1 odpowiedź 641 wizyt
pytanie zadane 19 listopada 2018 w C i C++ przez Roman1212 Początkujący (460 p.)
0 głosów
1 odpowiedź 441 wizyt
pytanie zadane 7 kwietnia 2023 w C i C++ przez Zuzan Początkujący (390 p.)

93,176 zapytań

142,185 odpowiedzi

321,979 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1637p. - dia-Chann
  2. 1497p. - Łukasz Piwowar
  3. 1372p. - CC PL
  4. 1370p. - Łukasz Eckert
  5. 1351p. - Tomasz Bielak
  6. 1328p. - Michal Drewniak
  7. 1312p. - Łukasz Siedlecki
  8. 1302p. - rucin93
  9. 1273p. - Adrian Wieprzkowicz
  10. 1232p. - Mikbac
  11. 1181p. - rafalszastok
  12. 1169p. - Grzegorz Aleksander Klementowski
  13. 1155p. - Piotr Aleksandrowicz
  14. 1149p. - Michał Telesz
  15. 1127p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...