2015-04-02 46 views
0

你们可以帮助我理解函数m吗?我们的想法是对printf“标签”,但我不明白什么是错的C下标值既不是数组也不是指针也不是矢量

#include <stdio.h> 
#define MAXL 50 
#define MAXC 50 
unsigned int linhas; 
unsigned int colunas; 
int segC [MAXL]; 
int segL [MAXC]; 
char tab[MAXL][MAXC]; 

void c(){ 
    int l,c,temp; 
    scanf("%d %d",&linhas,&colunas); 
    for (l=0;l<linhas;l++){ 
     scanf("%d[^'']",&temp); 
     segC[l]=temp; 
    } 
    for (c=0;c<colunas;c++){ 
     scanf("%d[^'']",&temp); 
     segC[c]=temp; 
    } 

    for(l=0;l<=linhas;l++){ 
     for(c=0;c<colunas;c++){ 
      scanf("%c",&tab[l][c]); 
     } 
    } 


} 

char m (linhas,colunas,segC,segL,tab){ 
    int l,c; 
    int tempi; 
    char tempc; 
    for(l=0;l<=linhas;l++){ 
     for(c=0;c<colunas;c++){ 
      printf("%c",tab[l][c]); 
     } 
     tempi=segL[l]; 
     printf("%d\n",tempi); 
    } 
    for(c=0;c<colunas;c++){ 
     tempi=segC[c]; 
     printf("%d",tempi); 
    } 
    printf("\n"); 
} 

char h (int line){  
} 
int main(){ 
    c(); 
//m(linhas,colunas,segC,segL,tab); 
} 
+1

哪条线路给您造成麻烦;请给出错误信息并解决问题 – 2015-04-02 21:00:25

+0

是的,任何像样的编译器都会给你一些警告,首先消除这些警告。 – 2015-04-02 21:03:30

+0

顺便说一句''%d [^'']“' - >'”%d“' – BLUEPIXY 2015-04-02 21:29:02

回答

0

你缺少变量类型:

char m (linhas,colunas,segC,segL,tab) 
0

改写这样的功能:

char m() { 
    /* ... */ 
} 

您不需要将全局变量作为参数提供给函数;实际上,局部函数参数会影响全局变量。

最后,避免省略参数和变量类型;至少在C99中至少被弃用或者甚至是非法的(省略类型默认为int,这导致了这里的问题。)

更好的是,在main()中声明它们为局部变量,并通过伪参考既m()c():打电话时

char m(unsigned int linhas, unsigned int colunas, int **segC, int **segL, char ***tab) { 
    /* ... */ 
} 

传递segC,SEGL的地址和标签。

相关问题