РАСКРЫТИЕ: Это домашнее задание.
Код ниже предназначен для чтения командного файла в формате:
ADD 6 6 5
ADDTERM 0 1 1
MULTIPLY 2 40
и вызовите соответствующую команду, используя заданные параметры.По какой-то причине, хотя ADD и ADDTERM работают должным образом, при чтении строки умножения возникает ошибка по умолчанию.
int arg_1 = 0, arg_2 = 0, arg_3 = 0;
while(fscanf(commands, "%s", command) != EOF)
{
if(strcmp(command, "ADDTERM") == 0)
{
/*The following line runs fine!*/
fscanf(commands, "%d %d %d",
&arg_1, &arg_2, &arg_3);
printf("ADDTERM, Poly: %d, Coeff: %d, Exp: %d\n",
arg_1, arg_2, arg_3);
if(polys[arg_1] == NULL)
{polys[arg_1] = CreatePolynomial();}
AddTermToPoly(polys[arg_1], arg_2, arg_3);
}
else if(strcmp(command, "MULTIPLY") == 0)
{
/*The following line results in a segfault*/
fscanf(commands, "%d %d", &arg_1, &arg_2);
printf("MULTIPLY, Poly: %d, Multiplier: %d\n",
arg_1, arg_2);
MultiplyPoly(polys[arg_1], arg_2);
}
/*...*/
}
Это также проблема только на Linux-сервере моей школы.Мой домашний компьютер работает нормально, используя «gcc версии 4.4.5 (Ubuntu / Linaro 4.4.4-14ubuntu5)», тогда как моя школа использует «gcc версии 4.1.2 20080704 (Red Hat 4.1.2-48)»
Есть идеи, почему это будет?Ваша помощь приветствуется!