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显示更多代码。了解。