Neden kodum kullanıcı verileri girdikten sonra çöp değişkenlerini yazdırıyor anlamıyorum. C Sınıfına girişimde Veri Yapıları, bağlantılı listeler ve bellek ayırma öğrenme sürecinde. Yardım için teşekkürler!Veri yapım için belleği bellekte nasıl ayırırım C
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct AutoMobilesInfo
{
char *Manufacturer, *ModelNameOfCar, *ColorOfCar;
int YearOfCar;
struct AutoMobilesInfo *next;
} Car;
void EnterCarInfo(Car *Info)
{
Info = (Car *)malloc(sizeof(Car));
Info->Manufacturer = (char *)malloc(12 *(sizeof(char)));
Info->ModelNameOfCar = (char *)malloc(12 *(sizeof(char)));
Info->ColorOfCar = (char *)malloc(12 *(sizeof(char)));
printf("Please enter the car's manufacturer: \n");
scanf(" %s", Info->Manufacturer);
printf("Please enter the car's model: \n");
scanf(" %s", Info->ModelNameOfCar);
printf("Please enter the car's color: \n");
scanf(" %s", Info->ColorOfCar);
printf("Please enter the year the car was made: \n");
scanf("%d", &Info->YearOfCar);
}
void PrintedOutCarInfo(Car *host)
{
host = (Car *)malloc(sizeof(Car));
host->Manufacturer = (char *)malloc(12 *(sizeof(char)));
host->ModelNameOfCar = (char *)malloc(12 *(sizeof(char)));
host->ColorOfCar = (char *)malloc(12 *(sizeof(char)));
printf("The car's manufacturer is %s\n", host->Manufacturer);
printf("The car's model is %s\n", host->ModelNameOfCar);
printf("The color of the car is %s\n", host->ColorOfCar);
printf("The year the car was made is %d\n", host->YearOfCar);
}
int main()
{
Car *Car1;
Car1 = (Car *) malloc(sizeof(Car));
EnterCarInfo(Car1);
PrintedOutCarInfo(Car1);
free(Car1);
return 0;
}
İlk soru, derleyici kodda: blokları malloc.h eklemediyseniz malloc işlevini anlayabilen bloklar nasıl? İkinci Soru, Neden önce veri yapmam için bellek ayırmam gerekiyordu? Girişte olduğu gibi, EnterCarInfo() işlevimde ilk satırı nasıl kaldırdığınızı görüyorum. – humbleCoder
Malloc.h veya ihtiyacınız olup olmadığını bilmiyorum. Ben makinemde yok. Eğer onu tekrar eklerseniz. Zaten Car1 için hafızayı ana tahsis ettiniz. Bunu fonksiyonlara aktardınız. – Harry
Oluşturur, derler ve çalışır, bu yüzden eminim. Bir sonraki ders saatimizde profesörüme sormam gerekecek. Tamam, şimdi anlıyorum ve yardımlarınız için teşekkür ederim! – humbleCoder