【问题标题】:How to read a separate values from multiple lines?如何从多行读取单独的值?
【发布时间】:2017-06-24 13:14:44
【问题描述】:

我们在 C 语言中使用哪个函数从多行中读取单独的值,例如姓名电话地址.. 我需要的示例

名称:.....
电话:.....
地址:....

现在打印完所有这些信息之后,用户就可以开始填写每个信息了

【问题讨论】:

  • 这个问题让我完全不知道您的实际问题可能是什么。 mcve 会有所帮助并确保阅读其他帮助页面,例如how to ask。在您写作时,您想阅读整行,而 scanf() 不起作用,也许我的 document on scanf 也可以帮助您。
  • 您是否要从文件的中读取?还是控制台输入中的行
  • 由于你需要显示所有用户必须预先填写的标题,所以你必须使用图形。 C 标准不支持它。您应该根据您的平台使用一些图形库。提及您正在使用的平台,即 UNIX 还是 Windows?
  • 其实是在控制台输入
  • 阅读您的更新后:我的文档对您没有帮助。 C 中的stdio 在输入和输出 中起作用,没有光标位置之类的概念。有特定于平台的 API,例如Windows Console API。如果您想编写可移植代码,请查看curses。 [...]

标签: c function scanf lines


【解决方案1】:

为了帮助您入门,这里有一个简单的示例程序,它使用了您所概述的“输入掩码”:

#include <curses.h>
#include <stdio.h>

int main(void)
{
    char name[60];
    char phone[60];
    char addr[60];

    initscr();
    mvaddstr(0, 0, "name:");
    mvaddstr(1, 0, "phone:");
    mvaddstr(2, 0, "address:");

    mvgetnstr(0, 9, name, 59);
    mvgetnstr(1, 9, phone, 59);
    mvgetnstr(2, 9, addr, 59);

    endwin();
    // using curses ends here, so we can use `stdio` functions like
    // `printf()` again.

    printf("name: %s\n", name);
    printf("phone: %s\n", phone);
    printf("address: %s\n", addr);

    return 0;
}

将此与适合您平台的curses 库链接(在Linux 上,编译时使用-lncurses,在Windows 上,获取并链接pdcurses)。

我建议您阅读NCURSES Programming HOWTO 以了解有关curses 的更多信息。

【讨论】:

  • 谢谢大家,我刚刚问了我的老师,他建议我使用 gotoxy 功能,我现在正在寻找它是如何工作的,如果有人可以帮助我,我会很感激它
  • gotoxy()conio.h 的一部分,这是一个长期弃用的控制台 API,例如在 MS-DOS 的编译器中发现的。我非常怀疑你现在会在任何地方找到它。
  • @AnasKasmi 你可能会使用一个古老的平台和一个古老的编译器,比如 Turbo C,在这种情况下,here's some documentation。请注意,这可移植到任何现代系统,并且不要将conio 调用与stdio 混用。如果您可以,请选择curses
  • 感谢您现在正在阅读您的文档,我实际上是在使用带有 GNU GCC 编译器的代码块
  • @AnasKasmi 那么你老师的建议不是最好的。人们写了 conio 替换 MinGW,比如 this project,但正如我已经概述的那样,你真的会更好地使用 curses
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
相关资源
最近更新 更多