【问题标题】:Using array and Function in for loop在 for 循环中使用数组和函数
【发布时间】:2015-05-17 19:55:08
【问题描述】:

有一个代码可以将关系转换为矩阵

当我编译它时,它给出了 2 个错误。我调试了它,但找不到真正的原因。

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main() {
int i=0,j=0,k=0;
char a[] = "12345";
char b[] = "abcde";
char r[] = "1c2b3e4d5a";
// Array Long
int LA = sizeof(a)-1;
int LB = sizeof(b)-1;
int LR = sizeof(r)-1;


   //index function

int index(char arr[],char v){  // [Error] a function-definition is not allowed here before '{' token
    for(k=0;k<sizeof(arr)-1;k++){
        if(arr[k]==v){
        return k;
        }
    }

}


// trying printf("%d\n%d\n%d\n",LA,LB,LR);


int rel[LA][LB];

for(i=0;i<LR;i+=2){
    int indexa = index(a,r[i]);
    int indexb = index(b,r[i+1]);
    rel[indexa][indexb]=1;
}


//print the matrix 

for(i=0;i<LA;i++){
    for(j=0;j<LB;j++){
        printf("%3d",rel[i][j]);
        }
    printf("\n");
}

return -1;
} //[Error] expected '}' at end of input

我该如何解决这个问题?

错误:

[错误] '{' 标记之前不允许函数定义
[错误] 输入结束时应为“}”

我将此代码从 java 代码转换为:Converting Relation to Matrix

【问题讨论】:

  • 有什么错误?
  • 还有,好像真的不是java代码,更像c。
  • 不能在主体内定义函数
  • 我在 // 点之后显示代码中的错误。
  • 我至少在你的 for 循环 k

标签: c matrix


【解决方案1】:

您不能在 C 中的函数内定义函数,并且您当前的代码尝试在 main 内定义 index。把它移到main的定义之前就可以了:

int index(char arr[],char v) {
    for (k = 0; k < sizeof(arr) - 1; k++) {
        if (arr[k] == v) {
            return k;
        }
    }
}

int main() {
    // code goes here...
}

【讨论】:

  • 感谢错误出来。但是输出不是我想要的。
【解决方案2】:

问题是在C 中你不能在函数内部定义函数 您在这里所做的是您在 main() 函数中定义了 index() 函数,这就是您出错的原因。

试试下面这个代码sn-p,希望它能解决你的问题?

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

//index function
// [Error] a function-definition is not allowed here before '{' token
// [SOLUTION] You can't define a function inside of a function in c
int
index (char arr[], char v)
{
  int k = 0;
  for (k = 0; k < sizeof (arr) - 1; k++)
    {
      if (arr[k] == v)
    {
      return k;
    }
    }
}

int
main ()
{
  int i = 0, j = 0;
  char a[] = "12345";
  char b[] = "abcde";
  char r[] = "1c2b3e4d5a";
// Array Long
  int LA = sizeof (a) - 1;
  int LB = sizeof (b) - 1;
  int LR = sizeof (r) - 1;


// trying printf("%d\n%d\n%d\n",LA,LB,LR);

  int rel[LA][LB];

  for (i = 0; i < LR; i += 2)
    {
      int indexa = index (a, r[i]);
      int indexb = index (b, r[i + 1]);
      rel[indexa][indexb] = 1;
    }


//print the matrix 

  for (i = 0; i < LA; i++)
    {
      for (j = 0; j < LB; j++)
    {
      printf ("%3d", rel[i][j]);
    }
      printf ("\n");
    }

  return -1;
}

//[Error] expected '}' at end of input:
//[SOLUTION]: again you can't define a function inside of another function

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 2020-06-03
    • 2015-12-02
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多