0

実際にはここに表示するコードはあまりありませんが、これについて現実的な答えが得られないようです。ユーザーから複数行の入力を取得するにはどうすればよいですか?

たとえば、ユーザーに次のようなことを言ってもらいたい場合があります...

 name: command
       command
       command 
       command

 name: command
       command 
       command

(コマンドの数は不明です。実際には、実際には行数と関係があります。)問題に関するリソースがあまりないように見えるため、どこから始めればよいかわかりません)

4

2 に答える 2

0

擬似コード:

do {
    read a line and put it into String variable s
    Push s into an array
} while (s is not empty)
Remove the last element of the array

私は何ヶ月も C を書いていないので、これが今できることです。

于 2012-11-10T00:44:58.093 に答える
0
enum { MAX_LINES = 100 };
char *lines[MAX_LINES];
int nlines;

char buffer[4096];

while (fgets(buffer, sizeof(buffer), fp) != 0 && nlines < MAX_LINES)
{
    if (buffer[0] == '\n')
        break;
    if ((lines[nlines++] = strdup(buffer)) == 0)
        ...memory allocation failed...
}

コマンド行はlines[0]..にありますlines[nlines-1]。行数のハードワイヤード制限が気に入らない場合はlines、ポインターの配列を動的に割り当てます (読者の演習)。

于 2012-11-10T00:49:53.623 に答える