Je suis encore en train d'apprendre C et je fais un exercice où je dois programmer une base de données voiture. Dans la fonction principale, j'ai déclaré un tableau de 100 pointeurs aux structures 'carinfo_t'. Dans la fonction '* createcarinfo', une nouvelle instance carinfo_t doit être créée. Mais j'ai le problème que la variable 'brandOfCar' n'est pas déclarée. Je ne comprends pas vraiment pourquoi je reçois ce message parce que le compilateur devrait savoir que cette variable fait partie de la structure, n'est-ce pas? La structure est déclarée comme type de données dans le programme et un pointeur sur la structure est initialisé au début de cette fonction.Variable non déclarée c dans la fonction pointeur de structure
Je suis désolé si cette question a déjà été posée quelque part. Toute aide est fortement appréciée.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <limits.h>
struct carinfo_t
{
char *brandOfCar;
char *modelOfCar;
int yearCarWasBuilt;
float valueOfCar;
};
struct carinfo_t *createCarinfo(char *brand, char *model, int year, float
value)
{
struct carinfo_t *newCarInfo=(struct carinfo_t*) malloc(sizeof(struct
carinfo_t));
newCarInfo->brandOfCar=(char*)malloc(sizeof(char)*
(strlen(brandOfCar)+1));
//Message: error: 'brandOfCar' undeclared (first use in this function)
//function not finished
}
int main()
{
struct carinfo_t *carbase[100]={};
return 0;
}
Je suggère aussi d'utiliser 'strdup' (si disponible) au lieu de' malloc (strlen (...) + 1) '... –
@KeineLust J'adore' strdup', ça me sauve beaucoup de taper . Je suis réticent à le recommander pour des raisons de portabilité, cependant. J'aimerais qu'il fasse partie de la norme, surtout vu sa simplicité. – dasblinkenlight
vrai, pas 100% portable, mais pourquoi ces fonctions (qui nécessite une allocation dynamique) comme 'strdup',' itoa', 'trim' ... ne sont pas inclus dans la bibliothèque standard? juste pour la compatibilité avec les systèmes embarqués? –