C程序采用标准输入

时间:2016-11-23 01:25:25

标签: c

所以我制作了一个程序,用字母顺序排序。而不是输入是标准输入,我的输入是通过命令行发送的,我不希望这样。我遇到的问题是它如何接近它。

用我必须输入的输入来运行我的程序 ./a.out Orange Apple banana

但我希望能够输入./a.out,然后按回车键,然后输入我的输入。

这是我的代码

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[]) {
  int i, j, k, size;
  size = argc -1;
  char *key;
  char* a[argc-1];


  for (i = 2; i < argc; i++) {
    key = argv[i];
    key[0] = tolower(key[0]);
    j = i-1;
    while (j >= 1 && strcmp(argv[j], key) > 0) {
      argv[j+1] = argv[j];
      j--;
    }

    argv[j+1] = key;
  }



  if (argc > 1){
      for (i = 1; i < argc;){
        puts(argv[i]);

        while (argv[++i] != NULL && strcmp(argv[i - 1], argv[i] ) == 0)
          continue;
      }
  }

  return 0;

}

1 个答案:

答案 0 :(得分:0)

当你启动程序时,你可以通过终端给它一些数据(就像你在你的例子中所做的那样),或者你可以明确要求用户通过scanf()函数给你一些数据。

对于您的示例,您可以使用以下内容:

int main() {
    // You need to allocate space for something that you will read.
    char input[100];
    // You need to know how many things you want to read.
    while(something)
        scanf("%s", input)
} 

缺点是你需要在前面知道你的单词有多久以及你将拥有多少单词,这样你就可以将它们保存在某个数组中,如果你想对它们进行排序或者用它们做其他事情(或者使用c ++与list或vector或set或其他东西进行保存,使用字符串来保存单词,set会为你排序单词;))。