我正在为这个程序运行 Xcode 4.4.1。
对象:通过调用将
用户输入的字符串插入队列并通过调用enqueue
取出插入的字符串dequeue
。
测试输入:
啊啊啊
什么不起作用:
在我调用的那一行,dequeue(queue, &name)
我期望得到 aaa 的出列值。但是,我得到一个垃圾或 NULL 值。
// 原型声明
int enqueue ( QUEUE *queue, void * dataInPtr ); // returns success
int dequeue ( QUEUE *queue, void **dataOutPtr ); // returns success
bool processQueue(QUEUE *queue, bool flag);
// 函数定义(仅processQueue
显示)
bool processQueue(QUEUE *queue, bool flag) {
char *name;
char usInput[MAX_LENGTH_INPUT + 1];
int success;
if(ENQUEUE == flag) {
do {
printf("Enter 3 letters for name: ");
fscanf(stdin, "%s", usInput);
} while(!validateInputName(usInput));
name = malloc(sizeof *name * 4);
name = usInput;
printf("usInput==\"%s\" and name==\"%s\"\n", usInput); // correctly shown
return enqueue(queue, name);
} else { // DEQUEUE == flag
if (!emptyQueue(queue)) {
dequeue(queue, &name); // I assume I have problem here??
printf("dequeued name == \"%s\"\n", name); // incorrectly shown. why???
// TODO: free(name);
return true;
} else {
return false;
}
}
}
// 输出:
usInput=="aaa" and name=="aaa"
dequeued name == "¿" // here, I am expecting aaa, not ¿
任何帮助表示赞赏!谢谢!