【问题标题】:Create user commands in C在 C 中创建用户命令
【发布时间】:2021-05-29 18:10:08
【问题描述】:

我想用 C 创建一个程序,用户可以在其中键入以下命令,我的代码可以获取这些值。

例如,如果用户键入:

"创建 2,3+4,5" "向右移动 2,3 + 3,4"

对于创建命令,我想获取 4 个整数(2、3、4 和 5)并存储在一组特定的变量中。对于 moveright 命令,我想对另一组变量执行相同的操作。

但是我不知道如何在 C 中编写代码来理解“创建”一词意味着它应该将以下整数存储到一组特定的变量中(中间的“+”是也让我感到困惑)...

我曾考虑过使用 switch case,但我读到 C 不支持它。

我非常感谢任何帮助,至少是关于我应该研究什么。

【问题讨论】:

  • 你的意思是用户在命令提示符(终端)输入de命令吗?您的目标是哪个操作系统?
  • 您需要将问题分解为更小的部分,并逐个解决。您会发现,当您这样做时,Google 会变得更加有用。开头是:“如何在 C 中接受用户输入?” 答案很可能是scanf()。然后,“如何比较 C 中的字符串?” 答案是strcmp()。以此类推。
  • 亲爱的乔纳森,你是对的。我相信 strcmp 在这种情况下会很有用。亲爱的 Fpiette,是的,它在控制台中,我使用的是 Ubuntu 20.04
  • 您必须创建一个名为create 的新程序和另一个名为moveright 的程序。然后用户可以键入像create 2,3+4,5 这样的命令行。您名为create 的程序将在程序名称之后的命令行上接收参数类型。但是请注意,shell(读取命令行并执行命令或调用其他程序的程序为特殊目的保留了很多字符。这意味着您将在命令行中遇到麻烦。跨度>
  • 看起来你想为它定义一个语法和一个解析器。因此,编辑您的问题并定义每个命令应该做什么。你可以使用EBNF

标签: c function


【解决方案1】:

要在程序运行时获取用户输入,您可以使用标准库中的I/O functions。使用fgets 获取用户输入,然后使用sscanf 对其进行解析是一种常见且稳健的方法。或者,根据复杂性,您可能需要手动解析字符串以获取所需的信息 - string library 有几个有用的函数可以帮助完成此操作。

main 函数的第二个参数是一组在启动时传递给程序的字符串,如果您想编写一个每次运行只做少量工作的简单程序,这可能会很有用。您需要使这些数据在每次运行程序之间保持不变。一种方法是使用标准文件函数将数据设为stored in a fileretrieved each time

C 绝对有一个switch statement,尽管它只适用于整数常量表达式。


话虽如此,您的意图还是很不清楚 - 从您的描述中听起来您甚至不确定您的程序实际上会做什么。如果你不知道你的程序会做什么,你会怎么写?

你应该从更简单的问题开始,然后逐步完成这样的事情。

下面是一组增加难度的程序:

  1. 向用户显示一条简单的消息。
  2. 询问用户的姓名,并亲自向他们打招呼。
  3. 反复读取以空格分隔的两个数字并显示其产品。
  4. 用数字用户输入填写array。向用户询问运算符(+-*/),并使用运算符显示该数组的缩减。
  5. 接受用户输入,用姓名和年龄填充arraystructures(每行一个条目,用空格分隔,例如Alice 26)。显示最小和最年长的人的姓名和年龄。
  6. 向用户询问一组以逗号分隔的名称(例如,Alice,Bob,...)。
    • 解析此输入字符串,将每个名称存储在一个数组中。
    • 询问用户姓名。
    • Search the array for this name,如果找到,则显示该名称中字母的值的总和(aA1 等)。

如果你能完成这六个程序,那么你将对编写目标程序所需的最低技能有一个基本的了解,这实际上是一个@ 987654333@.

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 2014-05-30
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多