#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "bcio2.h"
int error, x;
char totalimpulse[80], averageimpulse[80];
void validate_number();
int main(void)
{
clrscr();
do{
printf("\nTotal Impulse delivered: ");
gets(totalimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
{ //error C2447
clrscr();
do{
printf("\nAverage Impulse delivered: ");
gets(averageimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
看到匹配的括号,似乎没有任何不必要的分号。我假设这是显示输入/验证的正确方法。它只运行 do ... while(); 循环 totalimpulse 时运行正常但是当我在另一对{}之间复制/粘贴完全相同时我得到的只是那个C2447错误。
答案 0 :(得分:1)
现在你只需要一个代码块,在任何函数之外。
我从代码的其余部分开始假设这段代码应该是void validate_number();
的定义,如下所示:
void validate_number()
{
clrscr();
do{
// ...
return 0;
}
请注意void
函数无法返回值,因此应移除return 0
。
答案 1 :(得分:1)
错误发生的代码不在main
内,或者任何其他函数。如果删除错误行上的大括号和前面的大括号,那么第二个循环也会在main
旁边。如果您希望该部分是不同的功能,则必须包含该功能的标头。你在validate_number
顶部的内容只是一个承诺,你将在某处定义该功能(尽管如果你的意思是底部的那个部分是validate_number
,我我很确定你不希望它是递归的。