2016-11-23 1 views
0

그래서 단어를 취하고 알파벳 순으로 정렬하는 프로그램을 만들었습니다. 입력이 표준 입력이 아니라 명령 줄을 통해 입력됩니다. 원하지 않는 입력입니다. 나는 그것에 접근하는 방법에 문제가있다. C 프로그램이 표준 입력을받습니다.

내가 ./a.out Orange Apple banana

를 입력 할 필요가 입력 내 프로그램을 실행하려면하지만 난 다음 enter 키를 누릅니다 ./a.out를 입력 한 다음 내 입력을 입력 할 수 있도록하고 싶습니다. (당신이 프로그램 (당신이 당신의 예에서하고있는 것처럼) 터미널을 통해 그것을 일부 데이터를 제공 할 수 있습니다를 시작하거나 명시 적으로 당신에게 scanf와를 통해 일부 데이터를 제공하는 사용자를 요청할 수 있습니다 때 여기

내 코드

#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) 
} 

단점은 당신이 당신의 단어가 얼마나 오래 앞에 알 필요가 있다는 점이다 Gona을하고 그렇게해야합니다 얼마나 많은 단어를 당신이 그들을 저장할 수 있습니다 어떤 배열에서는 그들을 정렬하거나 다른 것과 함께하기를 원한다면 (또는리스트 또는 벡터와 함께 C++을 사용하거나 저장을 위해 set 또는 다른 것을 사용하고 단어를 저장하기 위해 문자열을 사용하면 단어가 정렬됩니다.)).

+0

글쎄, 얼마나 많은 입력 단어가 들어갈 지 알지 못한다. 내 문제 다. –

+2

이것이 프로그래밍 과제 인 경우, 교수님이 문자 배열의 작동 방식, 메모리 관리 방법 등을 토론 한 수업을 놓치거나 잤다 고 생각됩니다. –

+0

"끝"과 같은 단어를 사용하여 입력을 끝낼 수는 있지만 귀하의 문제에 대해서는 프로그램 시작시 터미널을 통해 데이터를 제공하는 것이 더 좋다고 생각합니다. – laky55555