错误:在数字常量之前预期')'

时间:2013-09-07 00:36:08

标签: c compiler-errors

错误:预期')'在数字常数之前

我的代码似乎是正确的,但编译器始终向我发送错误消息。在尝试编辑和编译一个小时后,我仍然找不到错误。救命? 这是我的代码:

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++;
            }
}

帮助?

4 个答案:

答案 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);

请参阅:printf documentation