有一个代码可以将关系转换为矩阵
当我编译它时,它给出了两个错误。我调试了它,但找不到真正的原因。
#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
如何解决这个问题?
错误:
[Error] a function-definition is not allowed here before '{' token
[Error] expected '}' at end of input
我将此代码从java代码转换为:Converting Relation to Matrix
最佳答案
您无法在 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...
}
关于c - 在 for 循环中使用数组和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30291485/