2
我仍在学习C语言,并且正在做一个练习,我必须编写一个汽车数据库。在主函数中,我声明了一个包含100个指向'carinfo_t'结构的指针的数组。在函数'* createcarinfo'中应该创建一个新的carinfo_t实例。但是我得到了'brandOfCar'变量未声明的问题。我不明白为什么我会收到这条消息,因为编译器应该知道这个变量是结构的一部分,对吗?该结构在程序中声明为数据类型,并且在该函数的开头初始化指向该结构的指针。结构指针函数中的未声明变量c
如果此问题已被问到某处,我很抱歉。很感谢任何形式的帮助。
#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;
}
我也会建议使用'strdup'(如果有的话)而不是'malloc(strlen(...)+ 1)'... –
@KeineLust我喜欢'strdup',它为我节省了很多打字。不过,我不愿意为便携性原因推荐它。我希望它是标准的一部分,特别是考虑到它的简单性。 – dasblinkenlight
是真实的,不是100%可移植的,但为什么像'strdup','itoa','trim'这些函数(需要动态分配)不包含在标准库中?只是为了与嵌入式系统兼容? –