PN666 发表于 2019-9-20 17:43:10

有一个错误,求大佬指点

报错是这样的:执行 cl.exe 时出错.

2.exe - 1 error(s), 0 warning(s)




#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define NUM 20
struct FOOD
{
char c;
int num;
}number;
struct VOTE
{
char c1;
char c2;
char c3;
}vote;
void count(char c,int n);
void menu()
int loadvote()
{
FILE *fp;
int i;
if((fp=fopen("voter.txt","r"))==NULL)
{
    printf("\n 不能打开此文件 \ n");
    return 0;
}
for(i=0;!feof(fp);i++)
{
   fscanf(fp,"%s%s%s",&vote.c1,&vote.c2,&vote.c3);
   }
fclose(fp);
return(i);
}
void select()
{
int m,w;
do
{
    puts(" 下一个 " );
    puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
   puts("\t\t{ }");
    puts("\t\t{ }");
   puts("\t\t{}");
    puts("\t\t{ }");
puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
    printf(" 请选择你的数字 (1-2) : [ ]\b\b");
    scanf("%d",&m);
   if(m<1||m>2)
   {
   w=1;
      printf(" 错误 \ n");
      select();
   }
   else w=0;
switch(m)
   {
   case 1:printf("\n\n");menu();break;
   case 2:exit(0);
   }
}while(w==1);
}
void innum()
{
int i=loadvote();
printf("\n 选票人数 :\t%d\n\n",i);
select();
}
void add(char c1,char c2,char c3)
{
int i;
for(i=0;i<3;i++)
{
   switch(i)
   {
   case 0:count(c1,5);break;
   case 1:count(c2,3);break;
   case 2:count(c3,2);
   }
}
}
void count(char c,int n)
{
switch(c)
{
case 'a':number.num+=n;break;
case 'b':number.num+=n;break;
case 'c':number.num+=n;
}
}
void input()
{
int i;
int m=loadvote();
printf("\n");
   number.num=number.num=number.num=0;
for(i=0;i<m;i++)
{
   printf("%c %c %c",vote.c1,vote.c2,vote.c3);
   if(vote.c1==vote.c2||vote.c1==vote.c3||vote.c2==vote.c3)
      printf("\t 该票无效 !\n");
    else
   {
   add(vote.c1,vote.c2,vote.c3);
   printf("\n");
   }
}
printf("\n\n");
select();
}
void output()
{
int n,i;
n=loadvote();
   number.num=number.num=number.num=0;
for(i=0;i<n;i++)
{
   if(vote.c1==vote.c2||vote.c1==vote.c3||vote.c2==vote.c3);
   
   else
   {
   add(vote.c1,vote.c2,vote.c3);
   }
}
printf("\n 候选人的得分 :\t");
printf("a: %d\n",number.num);
printf("b: %d\n",number.num);
printf("c: %d\n\n\n",number.num);
select();
}
main()
{
void choose();
   menu();
}
void menu()
{
void choose();
int n,w;
do
{ 程
    puts("\t\t^^^^^^^^^^^^ 足球先生投票序 ^^^^^^^^^^^^^^^^^^");
    puts("\t\t{ }");
    puts("\t\t{}");
   puts("\t\t{   }");
   puts("\t\t{}");
puts("\t\t{}");
   puts("\t\t{   }");
    puts("\t\t{ }");
   puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
    printf(" 请选择你的数字 (1-5) :[ ]\b\b");
    scanf("%d",&n);
   if(n<1||n>5)
   {
   w=1;
   getchar();
   }
   else w=0;
}while(w==1);
switch(n)
{
case 1:innum();break;
case 2:input();break;
case 3:output();break;
case 4:choose();break;
case 5:exit(0);
}
}
void choose()
{
int c;
if(number.num>number.num&&number.num>number.num)
{
   c=1;
}
else if(number.num>number.num&&number.num>number.num)
{
   c=2;
}
else if(number.num>number.num&&number.num>number.num)
{
   c=3;
}
else
{
    printf(" 重新选票 !\n");
    main();
}
switch(c)
{
case 1:printf("\n 祝贺 a 当选冠军 !\n\n\n");select();
case 2:printf("\n 祝贺 b 当选冠军 !\n\n\n");select();
case 3:printf("\n 祝贺 c 当选冠军 !\n\n\n");select();
}
}

jackz007 发表于 2019-9-20 17:58:49

      你的出错信息不完整,根本无助于找到问题,原样贴出全部错误信息。

      你先编译一下 hello,world ,先排除掉来自编译器的问题。

PN666 发表于 2019-9-20 18:11:30

jackz007 发表于 2019-9-20 17:58
你的出错信息不完整,根本无助于找到问题,原样贴出全部错误信息。

      你先编译一下 hello,wo ...

--------------------Configuration: 2 - Win32 Debug--------------------
Compiling...
2.c
C:\Users\Desktop\C语言\2.c(19) : error C2085: 'loadvote' : not in formal parameter list
C:\Users\Desktop\C语言\2.c(19) : error C2143: syntax error : missing ';' before '{'
C:\Users\Desktop\C语言\2.c(24) : warning C4129: ' ' : unrecognized character escape sequence
C:\Users\Desktop\C语言\2.c(25) : warning C4098: 'menu' : 'void' function returning a value
C:\Users\Desktop\C语言\2.c(32) : warning C4098: 'menu' : 'void' function returning a value
C:\Users\Desktop\C语言\2.c(51) : warning C4129: ' ' : unrecognized character escape sequence
C:\Users\Desktop\C语言\2.c(64) : warning C4013: 'loadvote' undefined; assuming extern returning int
C:\Users\Desktop\C语言\2.c(136) : error C2084: function 'void __cdecl menu()' already has a body
C:\Users\Desktop\C语言\2.c(140) : error C2018: unknown character '0xb3'
C:\Users\Desktop\C语言\2.c(140) : error C2018: unknown character '0xcc'
执行 cl.exe 时出错.

2.exe - 1 error(s), 0 warning(s)

jackz007 发表于 2019-9-20 18:22:53

本帖最后由 jackz007 于 2019-9-20 18:25 编辑

第17行
void menu()             ;

第24行
      printf("\n 不能打开此文件 \ n");

第51行
       printf(" 错误 \ n");

第140行
      { 程

      先把这几处改了,看看能不能编译通过。

yuweb 发表于 2019-9-20 18:28:24

第 17 行 少了个分号 ;
第 24 行和第 51 行 \ n中间不能有空格
第134行 main函数中要么添加return;要么就加void
第140行 多了一个'程'#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define NUM 20
struct FOOD
{
        char c;
        int num;
}number;
struct VOTE
{
        char c1;
        char c2;
        char c3;
}vote;
void count(char c,int n);
void menu();
int loadvote()
{
        FILE *fp;
        int i;
        if((fp=fopen("voter.txt","r"))==NULL)
        {
                printf("\n 不能打开此文件 \n");
                return 0;
        }
        for(i=0;!feof(fp);i++)
        {
                fscanf(fp,"%s%s%s",&vote.c1,&vote.c2,&vote.c3);
        }
        fclose(fp);
        return(i);
}
void select()
{
        int m,w;
        do
        {
                puts(" 下一个 " );
                puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
                puts("\t\t{ }");
                puts("\t\t{ }");
                puts("\t\t{}");
                puts("\t\t{ }");
                puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
                printf(" 请选择你的数字 (1-2) : [ ]\b\b");
                scanf("%d",&m);
                if(m<1||m>2)
                {
                        w=1;
                        printf(" 错误 \n");
                        select();
                }
                else w=0;
                switch(m)
                {
                case 1:printf("\n\n");menu();break;
                case 2:exit(0);
                }
        }while(w==1);
}
void innum()
{
        int i=loadvote();
        printf("\n 选票人数 :\t%d\n\n",i);
        select();
}
void add(char c1,char c2,char c3)
{
        int i;
        for(i=0;i<3;i++)
        {
                switch(i)
                {
                case 0:count(c1,5);break;
                case 1:count(c2,3);break;
                case 2:count(c3,2);
                }
        }
}
void count(char c,int n)
{
        switch(c)
        {
        case 'a':number.num+=n;break;
        case 'b':number.num+=n;break;
        case 'c':number.num+=n;
        }
}
void input()
{
        int i;
        int m=loadvote();
        printf("\n");
        number.num=number.num=number.num=0;
        for(i=0;i<m;i++)
        {
                printf("%c %c %c",vote.c1,vote.c2,vote.c3);
                if(vote.c1==vote.c2||vote.c1==vote.c3||vote.c2==vote.c3)
                        printf("\t 该票无效 !\n");
                else
                {
                        add(vote.c1,vote.c2,vote.c3);
                        printf("\n");
                }
        }
        printf("\n\n");
        select();
}
void output()
{
        int n,i;
        n=loadvote();
        number.num=number.num=number.num=0;
        for(i=0;i<n;i++)
        {
                if(vote.c1==vote.c2||vote.c1==vote.c3||vote.c2==vote.c3);
               
                else
                {
                        add(vote.c1,vote.c2,vote.c3);
                }
        }
        printf("\n 候选人的得分 :\t");
        printf("a: %d\n",number.num);
        printf("b: %d\n",number.num);
        printf("c: %d\n\n\n",number.num);
        select();
}
void main()
{
        void choose();
        menu();
}
void menu()
{
        void choose();
        int n,w;
        do
        {
                puts("\t\t^^^^^^^^^^^^ 足球先生投票序 ^^^^^^^^^^^^^^^^^^");
                puts("\t\t{ }");
                puts("\t\t{}");
                puts("\t\t{   }");
                puts("\t\t{}");
                puts("\t\t{}");
                puts("\t\t{   }");
                puts("\t\t{ }");
                puts("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
                printf(" 请选择你的数字 (1-5) :[ ]\b\b");
                scanf("%d",&n);
                if(n<1||n>5)
                {
                        w=1;
                        getchar();
                }
                else w=0;
        }while(w==1);
        switch(n)
        {
        case 1:innum();break;
        case 2:input();break;
        case 3:output();break;
        case 4:choose();break;
        case 5:exit(0);
        }
}
void choose()
{
        int c;
        if(number.num>number.num&&number.num>number.num)
        {
                c=1;
        }
        else if(number.num>number.num&&number.num>number.num)
        {
                c=2;
        }
        else if(number.num>number.num&&number.num>number.num)
        {
                c=3;
        }
        else
        {
                printf(" 重新选票 !\n");
                main();
        }
        switch(c)
        {
        case 1:printf("\n 祝贺 a 当选冠军 !\n\n\n");select();
        case 2:printf("\n 祝贺 b 当选冠军 !\n\n\n");select();
        case 3:printf("\n 祝贺 c 当选冠军 !\n\n\n");select();
        }
}

PN666 发表于 2019-9-20 18:42:37

jackz007 发表于 2019-9-20 18:22
第17行
void menu()             ;



感谢
页: [1]
查看完整版本: 有一个错误,求大佬指点