none
딕셔너리 만드는데 오류나는 부분이 어딘지 왜 오류가 나는지 모르겟어요... RRS feed

  • 질문

  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define _CRT_SECURE_NO_WARNINGS  
    void swap(char **p, char **q)
    {
    char   *temp = NULL;
    temp = *p;
    *p = *q;
    *q = temp;
    }

    void sort_word(char *w[], int n) {
    int i, j;
    for (i = 0; i < n; ++i) {
    for (j = i + 1; j < n; ++j) {
    if (strcmp(w[i], w[j] )> 0)
    swap(&w[i], &w[j]);
    }
    }
    }

    int main() {
    char *word[10];
    char w[10];
    for (int i = 0; i < 10; i++) {
    printf("\n%d 번째단어입력: ", i + 1);
    scanf("%s", &word, 100);
    }
    sort_word(word, 10);


    for (int i = 0; i < 10; i++) {
    printf("\n%d 번째단어출력: ",i+1,&word);
    }


    }
    2018년 11월 28일 수요일 오전 6:09

모든 응답

  • 일단 값을 스캔해서 word에 넣는 부분이 잘못 되었습니다. 이 부분은 어떻게든 다른 방식으로 고쳐야 할 것 같습니다. 본문의 코드 내에서 위에 swap이나 sort_word 같은 함수를 생각하면 이렇게 하면 안 되긴 하는데, 쉽게 설명하기 위하여 예를 들자면 아래와 같은 방식으로 스캔한 값이 변경되지 않도록 저장하는 방법을 생각해봐야 합니다.

    char word[10][10];
    for (int i = 0; i < 10; i++) {
        printf("\n%d 번째단어입력: ", i + 1);
        scanf_s("%s", word[i], 10);
     }

    그리고 출력하는 부분도 문제인데, word의 값을 출력하는 부분이 설정되어 있지 않네요. 이 부분도 아래와 같이 수정이 필요합니다.

    for (int i = 0; i < 10; i++) {
        printf("\n%d 번째단어출력: %s", i + 1, word[i]);
    }

    2018년 11월 28일 수요일 오후 3:21