Когда я запускаю мой код в режиме отладки, я могу видеть, что правильные значения из:Struct не возвращает правильное значение
createBooking("SOME NAME", 1, 2, 3, 4, 5, 6, 7);
отправляется в моей структуры. Но когда я пытаюсь вызвать что-то в своей структуре, я не вижу значения. printf
просто печатает 0, а не 2, как следует. Это что-то из моего printf
в main()
, что мне не хватает? Или что это может быть? Мой учитель смотрел на код, и он тоже не может найти проблему.
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
int main() {
struct Booking booking;
createBooking("SOME NAME", 1, 2, 3, 4, 5, 6, 7);
printf("%d", booking.pNumber);
getchar();
return 0;
}
functions.c:
#include "functions.h"
struct Booking createBooking(char *aName, int aPNumber, int aStartWeek, int aStopWeek,
int aCabNr, int aCabType, int aLiftcard, double aTotCost)
{
struct Booking booking = *(struct Booking*)malloc(sizeof(struct Booking));
strncpy(booking.name, aName, strlen(aName) + 1);
booking.pNumber = aPNumber;
booking.startWeek = aStartWeek;
booking.stopWeek = aStopWeek;
booking.cabNr = aCabType;
booking.cabType = aCabType;
booking.liftCard = aLiftcard;
booking.totCost = aTotCost;
return booking;
}
functions.h:
#ifndef functions_h
#define functions_h
#include <stdio.h>
#include <string.h>
typedef struct Booking {
char name[30];
int pNumber;
int startWeek;
int stopWeek;
int cabNr;
int cabType;
int liftCard;
double totCost;
} booking;
struct Booking createBooking(char *aName, int aPNumber, int aStartWeek, int aStopWeek,
int aCabNr, int aCabType, int aLiftcard, double aTotCost);
int bookBooking(struct Booking b);
#endif
Итак, каков результат вашего printf? –
Отредактировано под вопросом! printf печатает 0, а не 2, как следует. – pottsork
Это не делает то, что я думаю, что вы думаете: 'struct Booking booking = * (struct Booking *) malloc (sizeof (struct Booking));' и не похоже, что вам нужно сделать что-то сложное чтобы делать то, что вы хотите. –