2016-11-23 5 views
0

私は単語を取り、アルファベット順に並べ替えるプログラムを作っています。入力が標準入力ではなく、私の入力がコマンドライン経由で送られてきましたが、私はそれを望んでいません。私はそれがどのようにそれにアプローチするかについての問題を抱えている。 Cプログラムは標準入力を受け取ります

は私が ./a.out Orange Apple banana

を入力する必要が入力して私のプログラムを実行するが、私は、enterキーを押し./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

あなたがしたくないコードを入力しましたか? scanfを見ますか? –

+0

なぜあなたはscanfを使いませんか? –

+0

これは、できるだけ多くの入力を取る方法を知っている唯一の方法です。scanfを使用すると、文字列を追加する方法はどうなりますか?@OmidCompSCI –

答えて

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++を使うか、セーブするために何か他のものをセットしたり、単語を保存するための文字列をセットしてください。

+0

よく私は入力単語がどれくらいあるかを知っているとは思っていません。 –

+2

これはプログラミングの割り当てであれば、教授が文字配列の仕組み、メモリの管理方法などについて議論したクラスを見逃したり眠ったりしていると思われます。 –

+0

"end"のような単語を使用して入力を終了できますあなたの問題のために、私はプログラム開始時に端末経由でデータを与える方が良いと思います。 – laky55555

関連する問題