所以我制作了一个程序,用字母顺序排序。而不是输入是标准输入,我的输入是通过命令行发送的,我不希望这样。我遇到的问题是它如何接近它。
用我必须输入的输入来运行我的程序
./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;
}
答案 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会为你排序单词;))。