【发布时间】:2016-10-09 19:45:25
【问题描述】:
当尝试将字符串分配给先前定义的char flightNumber[MAX] 时,我遇到了
error: assignment makes integer from pointer without a cast [-Werror]
这对我来说很奇怪,因为我没有使用指针,而且我相信我使用的是正确的强制转换类型,即char 而不是int。问题是,分配给flightNumber[MAX] 的字符串需要根据用户输入的内容进行更改。
main()的相关代码粘贴在下面
flightMenu();
scanf( "%d", &choice );
while ( choice < 1 || choice > 3 ) {
printf( "That is not a valid flight option!" );
flightMenu();
scanf( "%d", &choice );
}
char name[MAX];
char flightNumber[MAX];
printf( "Enter your first name: ");
scanf( "%s", &name[MAX] );
if ( choice == 1 ) {
flightNumber[MAX] = "MIA1050";
seatReservation( flight1 );
}
else if ( choice == 2 ) {
flightNumber[MAX] = "BNA1050";
seatReservation( flight2 );
}
else if ( choice == 3 ) {
flightNumber[MAX] = "LAS1050";
seatReservation( flight3 );
}
看起来其他人也有类似的问题,但我不知道如何使用 strcpy 或指针之类的东西。为菜鸟问题和糟糕的格式道歉,但我似乎没有解决这个错误,我猜我忽略了一个非常简单的问题......
【问题讨论】:
-
您需要使用
strcpy或strncpy。像你正在做的赋值(使用 =)不会在 C 中复制字符串。 -
除了
strcpy,还有其他方法吗?不幸的是,对于这个作业,我们只被允许使用stdio.h、stdlib.h和time.hC 库。 -
分配给
flightNumber[MAX]完全超出了数组的范围。也是char;您不能将字符串分配给char。您使用strcpy()来“分配”字符串,并且从目标数组的开头而不是结尾开始。 -
如果你真的必须复制这些字符串文字(我不确定),那么你可以滚动你自己的 strcpy 版本,它只是一个简单的循环