このプログラム用に 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 ¿
どんな助けでも大歓迎です!ありがとう!