2016-11-23 3 views
0

Так что я сделал программу, которая принимает слова и сортирует их по алфавиту. Вместо ввода, который является стандартным вводом, мой ввод отправляется через командную строку, которая мне не нужна. У меня возникают проблемы с тем, как он подходит к нему.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; 

} 
+0

Значит, вы набрали код, в котором он полностью делает то, что вы не хотите, чтобы он делал? Посмотрите в scanf? –

+0

Почему вы не используете scanf? –

+0

Это единственный способ, которым я знаю, как это займет столько входов, сколько возможно, с помощью scanf, как бы я продолжал добавлять строки. @OmidCompSCI –

ответ

0

При запуске программы вы можете дать ему некоторые данные через терминал (как вы делаете в вашем примере), или вы можете явно задать пользователю, чтобы дать вам некоторые данные через зсапЕ ().

Для примера можно использовать что-то вроде:

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++ со списком или вектором или набором или что-то еще для сохранения и строки для сохранения слов, set будет сортировать слова для вас;)).

+0

Ну, я не должен знать, сколько входных слов будет входить. Это мои проблемы. –

+2

Если это назначение программирования, я подозреваю, что вы пропустили или проспали класс, в котором профессор обсуждал, как работают массивы символов, как управлять памятью и т. Д. –

+0

Вы можете использовать какое-то слово типа «конец», чтобы закончить чтение ввода, но для вашей проблемы я думаю, что лучше передавать данные через терминал при запуске программы. – laky55555

Смежные вопросы