c - 多行输入

时间:2012-11-10 00:38:47

标签: c input line

我实际上并没有很多代码要显示在这里,但我似乎无法得到一个真实的答案:我如何从用户那里获取多行输入?

例如,我可能希望用户说出类似......

的内容
 name: command
       command
       command 
       command

 name: command
       command 
       command

(命令的数量是未知的。实际上这与行数有关。)我只是不知道从哪里开始,因为似乎没有很多资源可以解决这个问题)

2 个答案:

答案 0 :(得分: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,这就是我现在能做的。

答案 1 :(得分: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指针数组(读者练习)。