c - 在 for 循环中使用数组和函数

标签 c matrix

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

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

#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/

相关文章:

c - 从函数传递字符串

c - 将值捕获到字符串中时出现问题

c++ - 使用-j1而不是-jN编译有什么好处

c - C99中局部静态数组的线程安全

java - 从Java到C的矩阵转置移植,类型不兼容的问题

matlab - 每当列中缺少索引时,将一个矩阵插入另一个矩阵

c - 动态分配的二维数组出错

c - 内存映射文件的大小不断增大

python - Numpy、掩蔽和 sklearn 聚类

algorithm - 最小化矩阵中 x 和 y 之间的曼哈顿距离