我的函数没有从main获取值。
typedef struct {
struct node *grip;
}PoolQueue;
struct node{
char *temp;
int *data;
struct node *next;
}node;
PoolQueue *PQcreatePoolQueue(){
PoolQueue *queue;
queue = malloc(sizeof(PoolQueue));
queue->grip = NULL;
return queue;
}
int main()
{
char x[] = "";
printf("Hello world!\n");
PoolQueue *q = PQcreatePoolQueue();
scanf("%s", &x);
PQaddSingle(x, q);
return 0;
}
void PQaddSingle(char *item, PoolQueue *queue){
if(queue->grip == NULL) printf("It is null");
}
当我调用函数PQaddSingle时,我在main中创建的queue-> grip不再是NULL。任何帮助将不胜感激。
答案 0 :(得分:2)
这是因为你的扫描存储位置非常糟糕。您正在扫描一个零字节的项目来存储数据...这会导致未定义的结果,在这种情况下,可能会覆盖您的q
值 - 显然还有一个您仍然可以读取的值。尝试在q
之前和之后打印scanf
的值,看看我的意思。
更好的是,声明x
的长度要比输入长(包括行终止和NULL终止)!