0
//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在函数中声明了,但我得到了错误。

4

3 回答 3

5

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

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

我放弃了重新格式化您的代码来查找问题。

于 2013-07-04T09:45:31.387 回答
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'; }}    

}
于 2013-07-04T09:47:03.500 回答
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'; 
}

}    

}

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

于 2013-07-04T09:59:57.010 回答