Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在if语句中调用方法会分解变量_C_If Statement_Scope - Fatal编程技术网

C 在if语句中调用方法会分解变量

C 在if语句中调用方法会分解变量,c,if-statement,scope,C,If Statement,Scope,我有这样的代码 int i; for(i=0; i<n ; i++) { .... char* ref_error = ""; if( isSeatAvailable(&tmp, movie_name, seat_number, &ref_error) == 0) { printf("available %s\n", seat_number); } else { logError(re

我有这样的代码

int i;
for(i=0; i<n ; i++)
{
    ....

    char* ref_error = "";
    if( isSeatAvailable(&tmp, movie_name, seat_number, &ref_error) == 0)
    {
        printf("available %s\n", seat_number);
    }
    else
    {
        logError(ref_error);
    }

    ....
}
是什么导致了这里的问题

这是我调用的方法

int isSeatAvailable(hall** halls,char* movie_name,char* seat_no, int ticket_count, char** ref_error)
{

   ....
   sprintf(*ref_error,"Seat %s is not defined at %s.",seat_no,tmp->hall_name);
   ....   
}
问题出在对
sprintf
的调用中。第一个参数
ref\u error
来自:

char* ref_error = "";
现在
sprintf
试图用错误消息覆盖常量
”。奇怪的事情会随之而来

sprintf
需要一个真正的缓冲区(足够大)来存储消息。不仅仅是指针。

问题在于调用
sprintf
。第一个参数
ref\u error
来自:

char* ref_error = "";
现在
sprintf
试图用错误消息覆盖常量
”。奇怪的事情会随之而来


sprintf
需要一个真正的缓冲区(足够大)来存储消息。不仅仅是指针。

内存损坏或堆栈溢出。很可能是由该功能引起的。也可能是您编写了调用某种形式的未定义行为的代码。无论如何,请发布可用于重现错误的代码。特别是该函数的代码。目前,没有人能回答这个问题。递归函数可能意味着堆栈溢出。您应该始终避免递归的众多原因之一。但是这里可能有几个bug,那些指向指针的指针看起来很可疑。主要的变量是如何分配的?术语:C没有“方法”;它有函数。@jackjop显示更多代码。请阅读。您有某种内存损坏或堆栈溢出。很可能是由该功能引起的。也可能是您编写了调用某种形式的未定义行为的代码。无论如何,请发布可用于重现错误的代码。特别是该函数的代码。目前,没有人能回答这个问题。递归函数可能意味着堆栈溢出。您应该始终避免递归的众多原因之一。但是这里可能有几个bug,那些指向指针的指针看起来很可疑。主要的变量是如何分配的?术语:C没有“方法”;它有函数。@jackjop显示更多代码。了解。