错误:预期')'在数字常数之前
我的代码似乎是正确的,但编译器始终向我发送错误消息。在尝试编辑和编译一个小时后,我仍然找不到错误。救命? 这是我的代码:
void get_record()
{
char record_num[LEN];
int x, y;
printf("Enter the record number of the Student Record to modify: ");
fgets(record_num, LEN, stdin);
{
x = atoi(record_num);
if (x>STUDENTS||x<=0)
{
printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");
printf("Enter the record number of the Student Record to modify: ");
get_record();
}
}
output();
_z= x;
i= (x-1);
printf(LEV2"%3d %25s %9s ", x, name[i], studno[i]);
for (y=0; y<EXAMS; y++)
{
printf("%5s ", exam_z[y]);
y++;
}
}
帮助?
答案 0 :(得分:2)
除非STUDENTS
是字符串文字(不是因为你将它与上面的int进行比较),否则你应该使用格式说明符%d
将它包含在字符串中,如下所示:
printf("ERROR: Invalid Input. Input should be from 1-%d.\n", STUDENTS);
答案 1 :(得分:1)
我认为你的错误声明错了。 STUDENTS
应该是编译时常量,因为您在if
条件下也使用它。所以,试试 -
printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);
答案 2 :(得分:0)
在这一行:
printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");
你使用“”错了,如果你想每次都把“在字符串中”。
现在应该没问题了:
printf("ERROR: Invalid Input. Input should be from 1-\"STUDENTS\".\n");
或者如果你想打印出学生的实际价值:
printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);
答案 3 :(得分:0)
printf("ERROR: Invalid Input. Input should be from 1-"STUDENTS".\n");
应该是
printf("ERROR: Invalid Input. Input should be from 1-"+STUDENTS+".\n");
相邻字符串需要与+
运算符连接。
修改强>
抱歉,我已经习惯了Java / C ++,这在C语言中不起作用。最好按照预期使用printf:
printf("ERROR: Invalid Input. Input should be from 1-%d.\n",STUDENTS);