【问题标题】:Reading integers into a ADT from stdin从标准输入将整数读入 ADT
【发布时间】:2015-10-12 16:44:18
【问题描述】:

这是我的抽象数据结构

 typedef struct {
    int *items;
    int size;
 } List;

我希望用户在一行中输入整数,例如

  a.out 
  12 14 2 8 9

并将它们读入列表。我了解如何添加到列表中,我想我没有得到的是从单行输入中获取整数

编辑:抱歉,我的意思是使用 scanf 之类的东西,而不是命令行参数

【问题讨论】:

    标签: c list data-structures struct typedef


    【解决方案1】:

    1.你的main的定义应该是int main(int argc,char **argv)

    2. 数字将是命令行参数(在使用argv 之前检查argc 的值是否大于1)。

    3. argv[1] , argv[2] 会有这些数字,但作为字符串。

    4. 使用atoisscanf 函数将它们转换为整数,并根据需要存储在结构成员中。

    编辑

    编辑:抱歉,我的意思是使用 scanf 之类的东西,而不是命令行参数

    您可以使用 fgets ,使用 strtok 标记字符串,然后转换并存储为整数变量。

    【讨论】:

      【解决方案2】:

      您必须使用如下输入参数:

      您的主函数将如下所示: int main (int argc, char *argv[] )

      在这种情况下,您可以像往常一样在命令行中添加参数

      ./a.out 12 14 2 8 9

      您可以通过 argv[1], argv[2], argv[3], ... 访问这些参数

      您可以循环遍历用户提供的包含在 argc 变量中的参数数量

      访问第一个参数的示例:

      int i;

      i= atoi(argv[1]);

      【讨论】:

      • 对不起,伙计,我搞砸了我的问题。我想用 scanf 或 fgets 试试这个,而不是命令行参数
      • 尝试使用 scanf_s 更安全的版本
      • @HocineDJEMAI 它不便携。
      • @ameyCU,感谢您的评论,是否有另一种解决方案可以同时实现该功能的便携性和安全性,谢谢
      • @HocineDJEMAI 我不认为 fgets 甚至 scanf 有什么问题。但是您需要继续检查它们的返回值是否成功。
      猜你喜欢
      • 2019-07-26
      • 2018-04-28
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2012-02-17
      相关资源
      最近更新 更多