【问题标题】:how to split command line arguments equally in C如何在C中平均分割命令行参数
【发布时间】:2015-09-11 21:16:24
【问题描述】:

我正在使用命令行参数编写一个 C 程序。 当我在命令行中给出一个带有空格的字符串时,它会拆分为子文件,

示例输出

$ ./cmdline 4646 313 256 96664

commandline args count=5
exe name=./cmdline
split_part1=4646
split_part2=313
split_part3=256
split_part4=96664

我想要相同的输出而不在字符串之间留出任何空格。怎么做,每个子部分应该用相等数量的字符串分割。请帮忙。

#include <stdio.h>
int main (int argc, char *argv[] )
{
  int i=0;
  printf("\n commandline args count=%d", argc);
  printf("\n exe name=%s", argv[0]);
  for (i=1; i< argc; i++)
  {
    printf("\n");
    printf("\n split_part%d=%s", i, argv[i]);
  }

  printf("\n");

  return 0;
  }

【问题讨论】:

  • each sub part should split with equal number of strings ...我没有全部了解。请澄清。
  • 也许提供一个您打算使用/获取的示例可能有助于我们更好地了解您。
  • "... 在字符串之间不留任何空格" 您希望通过输入以下内容获得与您的问题相同的输出:./cmdline 464631325696664??
  • @alk,在这种情况下,如果您没有规则或分隔符,您如何知道输入何时结束?
  • 是的,由 alk ./cmdline 464631325696664... .... 如果每个子文件有 5 行,那么输出应该是 split_part1=46463 split_part2=13256 split_part3= 96664.. 我用过所有方法我可以但无法得到...我的一位朋友告诉我使用 system() 来计算行数和划分,但我不知道如何使用。请帮忙

标签: c command-line-arguments


【解决方案1】:

按照cmets,一个简单的算法来实现你想要的样子

(对于5的固定token大小,以后可以根据需要修改)

  1. 检查是否argc ==2
  2. 计算argv[1]的字符串长度,存储。
  3. 取一个变量作为索引。
  4. 编写一个循环,中断条件为index &lt; string_length,增量条件为index +=5
  5. 使用printf()(用于说明,您也可以添加存储部分)喜欢

    printf("%5s\n" &(argv[i][index]));
    

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2019-10-09
    • 2013-01-13
    相关资源
    最近更新 更多