函数中未声明的变量

时间:2013-07-04 09:42:37

标签: c

//Function to store select_field
void store_field(int num_fields, unsigned long *lengths, 
    MYSQL_ROW row, char elect_type[10][100]) 
{
    //Storing select_field below
    int i,j,k,g;
    for( i=1;i < num_fields;i=i+10)
    { 
        // i+10 so that loop is executed one time only, 
        // i=1 bcoz 2nd entry is select_type
        for (j=0;j<lengths[i];j++)
        {
            if (row[i] != NULL)
            {
                select_type[k][j] = *row[i];
                row[i]++; 
            }

            if (row[i] == NULL) 
            { 
                select_type[k][j]= '\0';
                printf ( "NULL\n");
                break; // row[i] is null for fields containing NULL
            }
        }
        for (j;j<100;j++)
        {
            select_type[k][j]='\0';
        } 
            // setting every other empty field in current row 
            // of select_type to NULL   
    }
    k++; 
}   
g = k; //HERE I AM GETTING THE ERROR 
for (k;k<10;k++){for(j=0;j<100;j++)
{
    select_type[k][j]='\0'; 
}
}    

我已经在函数中声明了k,但我收到了错误。

3 个答案:

答案 0 :(得分:5)

如果你得到“不在函数中”,那意味着被标记的代码是,等待它,而不是函数。

可能是一个不匹配的右括号(})导致你的功能在你认为它之前结束。

我放弃了重新格式化代码以找到问题。

答案 1 :(得分:4)

你有一个额外的结束括号。这条线

}     g=k; **//HERE I AM GETTING THE ERROR**

关闭该功能。


我冒昧地格式化代码缩进。如果你保持良好的缩进,应该清楚}不合适:

#include <stdio.h>
#include <ctype.h>  // For tolower() function  //

//Function to store select_field
void store_field(int num_fields,unsigned long *lengths,MYSQL_ROW row,char select_type[10][100]){
 //Storing select_field below
    int i,j,k,g;

for( i=1;i < num_fields;i=i+10){ // i+10 so that loop is executed one time only , i=1 bcoz 2nd entry is select_type
    for (j=0;j<lengths[i];j++){
        if (row[i] != NULL){ select_type[k][j] = *row[i];
            row[i]++; 
        }

         if (row[i] == NULL) { select_type[k][j]= '\0'; printf ( "NULL\n");break; // row[i] is null for fields containing NULL
     }

    }for (j;j<100;j++){select_type[k][j]='\0';}    //setting every other empty field in current row of select_type to NULL   

} k++; 
//   }     g=k; **//HERE I AM GETTING THE ERROR** 
for (k;k<10;k++){for(j=0;j<100;j++){select_type[k][j]='\0'; }}    

}

答案 2 :(得分:0)

您应始终缩进代码以避免此类错误。您可以找到不同的缩进样式,选择您最喜欢的缩进样式

http://en.wikipedia.org/wiki/Indent_style

还有自动缩进工具,下面是您的代码正确缩进

void store_field(int num_fields,unsigned long *lengths,MYSQL_ROW row,char select_type[10][100])
{

   int i,j,k,g;

   for( i=1;i < num_fields;i=i+10)
   { 
      for (j=0;j<lengths[i];j++)
      {
         if (row[i] != NULL)
         { 
            select_type[k][j] = *row[i];
            row[i]++; 
         }

         if (row[i] == NULL) 
         { 
            select_type[k][j]= '\0'; 
            printf ( "NULL\n");
            break; // row[i] is null for fields containing NULL
         }

      }
      for (j;j<100;j++)
      {
         select_type[k][j]='\0';
      }    
   } 
   k++; 
}     

g=k; **//HERE I AM GETTING THE ERROR** 
for (k;k<10;k++){for(j=0;j<100;j++)
{
   select_type[k][j]='\0'; 
}

}    

}

所有错误和额外括号立即变得明显。检查一些代码风格指南,有很多,选择你喜欢的,并坚持使用。