0

こんにちは、私は大学のプロジェクトのために線形単一連結リストに基づく C データベース プログラムを実行しています。私がまだ理解していない問題は、入出力プログラムです。

基本的にプログラムの入力はこのようにする必要があります

INSERT
001 // indicates patient's number
John // indicates patient's name
M // indicates patient's gender
#
002 
Mary
F
#
SELECT // which means print the list
* // indicates all the list to be print
#
EXIT 

入力が完了し、次の行が出力です

Data is added.
#
Hospital ID : 001
Name : John
Gender : M
#
Hospital ID : 002
Name : Mary
Gender : F
#

それで全部です。これが私がやっていることです(説明で)

  • 最初の行はコマンドの gets です
  • while コマンドを実行することは exit ではなく、 char の # 記号ではありません。strcmp を使用して「INSERT」または「SELECT」であるかどうかをチェックします。
  • 次の行は、linkedlist コマンドで使用される入力を取得します。ここで、コマンドが挿入されている場合は int でフラグを指定し、3 回要求するか、strcmp を使用した char 記号の * である場合は SELECT を指定します。
  • したがって、基本的には、(gets を使用して) 入力行を要求する (フラグ) 回を繰り返した後、# が入力された場合、再度コマンドを要求します (その char[size] の前に言及するのを忘れました)。
  • そのため、コマンドを印刷して印刷出力用のキューに入れます
  • EXIT が入力されるまでエンキューを保持し、それ以外の場合はキューが NULL になるまでデキューします (キューの先頭を char temp に入れます)

しかし、プログラムはINSERT関数に対してのみ正しく機能するため、アルゴリズム全体が機能していないようです。

それから C の本に戻って、マクロやパラメータなどについて読み、インターネットを調べて、 # 自体を定義するアイデアを見つけて、さらにコマンドを要求するコマンドにします。

しかし、物事がどのように機能するかを完全には理解していないようです。適切な入力と出力を得るために何をすべきか考えていますか? この種の strcmp while および if を使用するか、または # 自体を定義しますか?

よろしくお願いします。どんな助けでも本当に感謝しています。

4

1 に答える 1

0

ハッシュタグ#は、プログラムを作成しない限り、プログラムの入力では意味がありません。

#includeまたはのようなディレクティブを前処理するためのハッシュタグは、C ソース コード ファイル(または C ヘッダー ファイル)#defineで意味があります。入力として取得するプログラムはすべて、コマンドではなく文字です。

于 2012-04-20T09:01:16.027 に答える