【发布时间】:2012-03-15 20:06:26
【问题描述】:
程序刚刚构建,但提示就像卡在无限循环中一样挂起。
第一个 printf 语句甚至没有运行。
该程序的想法是获取 MMSI、名称、位置、路线和速度,并将它们放在一个结构中以写入文件。
int main(int argc, char** argv) {
ship *current_ship;
current_ship = getShipInfo();
//writeShip(current_ship);
return (EXIT_SUCCESS);
}
ship * getShipInfo() {
ship *current_ship;
current_ship = malloc(sizeof(ship));
int MMSI, course;
char name[51];
float lat, lon, speed;
printf("Enter MMSI (9 digits):\n");
scanf(" %9d", &MMSI);
printf("Enter ship name (upto 50 characters):\n");
scanf(" %51s", name);
printf("Enter ship latitude (real number with upto 3 decimal places):\n");
scanf(" %f", &lat);
printf("Enter ship longitude (real number with upto 3 decimal places):\n");
scanf(" %f", &lon);
printf("Enter course made good (degrees from true north):\n");
scanf(" %3d", &course);
printf("Enter speed over the ground (in knots with exactly one decimal place):\n");
scanf(" %f", &speed);
current_ship->MMSI = MMSI;
strcpy(current_ship->name, name);
current_ship->lat = lat;
current_ship->lon = lon;
current_ship->course = course;
current_ship->speed = speed;
return current_ship;
}
【问题讨论】:
-
终端是否处于阻止
stdout被刷新的特殊模式?尝试在printf()调用之后插入fflush(stdout)。 -
您尝试过哪些调试方式?例如,如果您将
return NULL;作为getShipInfo()中的第一条语句,那么程序是否运行正常?诸如此类。 -
最好发布完整的代码,包括船舶结构声明和函数声明等