0

私はコードを数回調べましたが、問題が見つからないようです。同様のエラーが発生した他の人を見たことがありますが、その中にはキャストの問題が含まれている人もいますが、ここで問題になる理由を理解するのに苦労しています.

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <math.h>

int *getData(FILE *fp, int *length);
int **getGroups(int *mainArray, int num, int remainder);

int main(void)
{
   FILE *fp;
   int *mainArray, length, num, remainder, **groups;
   double sq;
   fp = fopen("data.txt", "r");
   mainArray=getData(fp, &length);
   sq = (sqrt(length));
   num = (int)sq;
   remainder = length - (num*num);
   groups = getGroups(int *mainArray, int num, int remainder);

   return(0);
}

問題のファイル サイズは 100 int であるため、平方根は 10 である必要があります。以前のコードの反復でこれをチェックしたところ、num は = 10 になりました。これが長くなりすぎないように、実際の関数は除外します。彼らのずっと前に。ただし、コンパイラが提供するすべての関連エラーを含めます...

problem3.c: In function ‘main’:
problem3.c:19:23: error: expected expression before ‘int’
problem3.c:19:23: error: too few arguments to function ‘getGroups’
problem3.c:7:7: note: declared here

私はそれを使用するすべての場所で3つの引数があることは明らかであるため、 getGroups を機能させるには引数が少なすぎることにかなりうんざりしています。このエラーは、最初のエラーが何らかの原因で発生したと思いますか?

4

1 に答える 1

4

これ:

groups = getGroups(int *mainArray, int num, int remainder);

は有効な構文ではありません。これは基本的にプロトタイプのコピーであり、適切な呼び出しではありません。

そのはず:

groups = getGroups(mainArray, num, remainder);
于 2013-08-13T09:24:44.297 に答える