得到错误,如“没有原型的呼吁功能” [英] getting error like "call to funtion with no prototype"

查看:73
本文介绍了得到错误,如“没有原型的呼吁功能”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里我用c语言学习mgmt。

nw我的问题是我已经宣布了我的所有功能。当我在我的代码中使用该功能时。

我的编译器给了我一个警告信息没有原型调用功能



plz建议我解决这类问题

提前谢谢



我的代码在下面



 #include< conio.h> 
#include< stdio.h>

int bubble(int *, int );
void filewrite();
void avgmarks();
void fileprint();
void filesort();
void rollin();

/ * **************** ******分拣功能*************************** /
int bubble( int x [], int n)
{
int hold,j,pass,i,switched = 1 ;
for (pass = 0 ;传递< ; n-1&& switched == 1 ; pass ++)
{
switched = 0 ;
for (j = 0 ; j< n-pass-1; j ++)
if (x [j]> x [j + 1])$ ​​b $ b {
switched = 1 ;
hold = x [j];
x [j] = x [j + 1];
x [j + 1] = hold;
}
}
return 0 );
}
/ * *************** *******文件写作功能****************************** /
< span class =code-keyword> void
filewrite()
{
int roll,ch,mark;
char nam [ 50 ];
FILE * fp;
clrscr();
fp = fopen( student.txt a);
printf( ENTER ROLL NUMBER,NAME,MARKS \ n);
ch = 1 ;
while (ch)
{
scanf( %d%S%d,&安培;辊,&安培;南,&安培;标记);
fprintf(fp, %d%s%d \ n,roll,南,标记);
printf( \ n \ n按1继续,0停止 );
scanf( %d,& ch);
}
fclose(fp);
}
/ * *************** ****在屏幕上输出数据*************** /
void fileprint()
{
int 标记[ 100 ],rollno [ 100 ],x [ 100 ],i;
char 名称[ 100 ] [ 50 < /跨度>];
FILE * fp;

clrscr();
fp = fopen( student.txt r);
i = 0 ;
printf( ROLLNO NAME MARK \ n);
while (!feof(fp))
{
fscanf(fp, %d%s%d \ n,& rollno [i],& name [i],& marks [i]) ;
printf( %d%s%d \ n,rollno [i] ,名称[I],标记[1]);
i = i + 1;
}
fclose(fp);
printf( \ n \ nn \ nnPRESS ANY KEY);
getch();

}
/ * *********** *******分类文件************************ /
void filesort()
{ int 标记[ 100 ],rollno [ 100 ],x [ 100 ],n,i,j;
char 名称[ 100 ] [ 50 < /跨度>];
FILE * fp,* fm;

fp = fopen( student.txt r);
fm = fopen( marks.txt w);
i = 0 ;
while (!feof(fp))
{

fscanf(fp, %d%s%d \ n,& rollno [i],& name [i],& marks [一世]);
x [i] = marks [i];
i = i + 1;
}

n = i;

bubble(x,n);

for (i = 0 ; i< n; i ++)
{
printf( %d \ t,x [i]) ;
}

for (i = 0 ; i< n ; i ++)
{
for (j = 0 ; j< n; j ++)
{
if (x [i] == marks [j])
{
fprintf(fm , %d%s%d \ n,rollno [j],name [j] ,马克[J]);
}
}
}
fclose(fm);
fclose(fp);
printf( \ n \ nn \ nnPRESS ANY KEY);
getch();

}
/ * *********** *************使用ROLLNO的数据*************************** /
void rollin()
{ int i,roll,ch,mark,roll1;
char nam [ 50 ];
FILE * fm;

ch = 1 ;
while (ch)
{clrscr();
fm = fopen( marks.txt r);
printf( \ n ENTER ROLL NUMBER - );
scanf( %d,& roll1);
i = 0 ;
while (!feof(fm))
{
fscanf(fm, %d%s%d \ n,& roll,& nam,& mark);
if (roll1 == roll)
{printf( \ nROLLNO。名称标记\ n);
printf( %d%s%d \ n,roll,nam,标记);
break ;
}
else
i = i + 1;
}
printf( \ n \ n按1查看学生信息,0到返回主菜单\ n);
scanf( %d,& ch);
fclose(fm);
}



}

void avgmarks()
{
int 标记[ 100 ],rollno [ 100 ],N,I;
float avg,x;
char 名称[ 100 ] [ 50 < /跨度>];
FILE * fm;
fm = fopen( marks.txt r);
i = 0 ;
while (!feof(fm))
{

fscanf(fm, %d%s%d \ n,& rollno [i],& name [i],& marks [一世]);
x = x + marks [i];
i = i + 1;
}
n = i;
avg = x / n;
printf( %d学生的平均分数 - %f,n,avg );
fclose(fm);
printf( \ n \ nn \ nnPRESS ANY KEY);
getch();

}



void main()
{
int 标记[ 100 ],rollno [ 100 ],x [ 100 ],n,i,j,roll,c,mark,roll1;
char 名称[ 100 ] [ 10 ],nam [ 50 ];

while (c!= 6
{
clrscr();
printf( GIVE CHOICE - \ n);
printf( 1输入学生信息。\ n);
printf( 2要查看STUDENT.TXT FILE \ n);
printf( 3基于MARKS的排序文件\ n);
printf( 4打印学生信息。使用ROLL NO \ n);
printf( 5找到MARKS的平均数);
printf( 6 TO EXIT\\\
\ n -
);
scanf( %d,& c);
clrscr();
switch (c)
{
case 1
filewrite();
break ;
case 2
fileprint();
break ;
case 3
filesort();
break ;
case 4 :rollin();
break ;
case 5 :avgmarks();
break ;
case 6
break ;
默认
break ;
}
}
getch();
}

解决方案

最简单的方法是对你的函数进行原型设计 - 你可以通过编写简短形式来实现在尝试调用函数之前,在文件顶部的函数定义。

例如:

  int 添加( int  int );  / *  原型 - 首次使用前* /  

int main( void
{
return Add( 3 4 ); / * 首次使用* /
}

int 添加( int a, int b) / * 函数声明* /
{
返回 a + b;
}

这样,编译器会在您尝试使用它之前知道要将哪些参数传入和传出函数,并且不必回溯 一旦到达实际的功能声明就检查它们。


参见 http://支持.microsoft.com / kb / 99261 [ ^ ]

here i m making an aplication on school mgmt in c language.
nw my problem is i have declared my all the function. bt when i m using that functionin my code.
my compiler gives me a warning msg that " call to funtion with no prototype"

plz suggest me some solution for this kind of problem
thanks in advance

my code is below

#include<conio.h>
#include<stdio.h>

int bubble(int*,int);
 void filewrite();
 void avgmarks();
 void fileprint();
 void filesort();
 void rollin();

/*********************** SORTING FUNCTION ***************************/
int bubble(int x[],int n)
{
 int hold,j,pass,i,switched = 1;
 for(pass = 0; pass < n-1 && switched == 1;pass++)
 {
  switched=0;
  for (j=0;j<n-pass-1;j++)
   if (x[j]>x[j+1])
   {
    switched=1;
    hold = x[j];
    x[j] = x[j+1];
    x[j+1]=hold;
    }
   }
return(0);
}
/*********************** FILE WRITING FUNCTION ******************************/
void filewrite()
{
  int roll,ch,mark;
  char nam[50];
   FILE *fp;
   clrscr();
  fp = fopen("student.txt","a");
   printf("ENTER ROLL NUMBER, NAME , MARKS \n");
  ch =1;
  while(ch)
  {
  scanf("%d%s%d",&roll,&nam,&mark);
  fprintf(fp,"%d %s %d\n",roll,nam,mark);
  printf("\n\n press 1 to continue,0 to stop");
  scanf("%d",&ch);
  }
   fclose(fp) ;
}
/******************** OUTPUTING DATA ON SCREEN***************/
void fileprint()
{
  int marks[100],rollno[100],x[100],i;
  char name[100][50];
  FILE *fp;

  clrscr();
  fp = fopen("student.txt","r");
   i=0;
   printf("ROLLNO       NAME        MARK\n");
   while(!feof(fp))
  {
     fscanf(fp,"%d %s %d\n",&rollno[i],&name[i],&marks[i]);
     printf(" %d          %s          %d\n",rollno[i],name[i],marks[i]);
     i=i+1;
   }
   fclose(fp);
   printf("\n\n\nPRESS ANY KEY");
   getch();

  }
/******************* SORTING FILE ************************/
void filesort()
  { int marks[100],rollno[100],x[100],n,i,j;
    char name[100][50];
    FILE *fp,*fm;

    fp = fopen("student.txt","r");
    fm = fopen("marks.txt","w");
    i=0;
   while(! feof(fp))
    {

     fscanf(fp,"%d %s %d\n",&rollno[i],&name[i],&marks[i]);
     x[i]= marks[i];
     i=i+1;
      }

       n=i;

       bubble(x,n);

    for(i=0;i<n;i++)
    {
    printf(" %d\t",x[i]);
    }

 for(i=0;i<n;i++)
 {
   for (j=0;j<n;j++)
   {
   if(x[i]==marks[j])
   {
      fprintf(fm,"%d %s %d\n",rollno[j],name[j],marks[j]);
     }
   }
 }
  fclose(fm);
  fclose(fp);
  printf("\n\n\nPRESS ANY KEY");
  getch();

}
/************************* DATA USING ROLLNO***************************/
void rollin()
{   int i,roll,ch,mark,roll1;
    char nam[50];
    FILE *fm;

    ch=1;
  while(ch)
  { clrscr();
    fm = fopen("marks.txt","r");
    printf(" \n ENTER ROLL NUMBER - ");
    scanf("%d",&roll1);
      i=0;
   while(! feof(fm))
    {
     fscanf(fm,"%d %s %d\n",&roll,&nam,&mark);
     if(roll1==roll)
    {printf("\nROLLNO.     NAME        MARKS\n ");
     printf(" %d          %s          %d\n",roll,nam,mark);
     break;
     }
     else
     i=i+1;
      }
  printf("\n\npress 1 to see student info, 0 to return to main menu\n");
  scanf("%d",&ch);
  fclose(fm);
  }



 }

void avgmarks()
 {
    int marks[100],rollno[100],n,i;
    float avg,x;
    char name[100][50];
    FILE *fm;
    fm = fopen("marks.txt","r");
    i=0;
   while(! feof(fm))
    {

     fscanf(fm,"%d %s %d\n",&rollno[i],&name[i],&marks[i]);
     x = x + marks[i];
     i=i+1;
      }
     n = i;
   avg = x/n;
  printf("AVERAGE MARKS OF %d STUDENTS ARE -  %f ",n,avg);
  fclose(fm);
  printf("\n\n\nPRESS ANY KEY");
   getch();

 }



void main()
{
  int marks[100],rollno[100],x[100],n,i,j,roll,c,mark,roll1;
  char name[100][10],nam[50];

  while(c!=6)
   {
     clrscr();
     printf("GIVE CHOICE--\n");
     printf("   1 TO ENTER STUDENT INFO.\n");
     printf("   2 TO SEE STUDENT.TXT FILE\n");
     printf("   3 TO SORT FILE ON BASIS OF MARKS\n");
     printf("   4 TO PRINT STUDENT INFO. USING ROLL NO\n");
     printf("   5 TO FIND AVERAGE OF MARKS\n");
     printf("   6 TO EXIT\n\n--");
     scanf("%d",&c);
     clrscr();
     switch(c)
     {
     case 1:
          filewrite();
          break;
     case 2:
          fileprint();
         break;
     case 3:
         filesort();
         break;
     case 4:  rollin();
          break;
     case 5:  avgmarks();
          break;
     case 6:
          break;
     default:
          break;
     }
    }
getch();
  }

解决方案

The easiest thing to do is to prototype your function - you do that by writing a "short form" of the function definition at the top of the file, before you try call the function.
For example:

int Add(int, int);   /* Prototype - before first use */
    
    int main (void)
        {
        return Add(3, 4);            /* First use */
        }
    
    int Add(int a, int b)            /* Function declaration */
        {
        return a + b;
        }

That way, the compiler gets to know what parameters to expect you to pass into and out of the function before you try to use it, and doesn't have to "back-track" to check them once it gets to the actual function declaration.


See http://support.microsoft.com/kb/99261[^].


这篇关于得到错误,如“没有原型的呼吁功能”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆