프로그래밍

 3204, 1/161 회원가입  로그인  
   marunim
   오류 좀 찾아주세요

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6633 [복사]


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> //배열
#include <stdlib.h> //난수생성
#include <time.h>                                                                                                                                                                                 


#define MAX 500

//  정적전역변수 - 함수의 호출이 끝나도 소멸되지 않음 (p.321)                                                                                                                                                                                                
static int wordnum; // 현재 단어가 몇 개 저장되어 있는가?
static char eng[MAX][30];
static char kr[MAX][30];


//  매개 변수를 통해 원본 값을 0으로 변경하는 함수 - 포인터 (p.354)
void modify(int* ptr) {
        *ptr = 0;
}


void WordView();
void WordAdd();
void WordQuiz();
int randnum();

// 메인 메뉴 //
void main() {
        int num;
        printf("\n\n----단어 암기 프로그램----\n");
        printf("1. 단어 보기                2. 단어 추가                3. 단어 맞추기\n");
        scanf("%d", &num);
        getchar();

        switch (num) {

        case 1: {
                WordView();
                break;
        }
        case 2: {
                WordAdd();
                break;
        }
        case 3: {
                WordQuiz();
                break;
        }
        }
}

// <1. 단어 표시하기>
void WordView() {
        printf("< 1. 저장된 단어 리스트 >\n\n\n");
        printf("  단어  /  뜻\n\n");
        for (int i = 0; i < wordnum; i++) {
                printf("  %s  /  %s", eng[i], kr[i]);
                printf("\n");
        } main();
}

//  <2. 단어 추가하기>
void WordAdd() {
        printf("< 2. 단어 추가하기 >\n\n\n");
        
        do {
                printf("영단어: ");
                gets_s(eng[wordnum], 30);

                // 사용자가 '그만'이라고 입력하면 반복문 빠져나오기
                if (strcmp("그만", eng[wordnum]) == 0) {
                        modify(eng[wordnum]);  // '그만' 삭제하기
                        main();
                        break;
                }
                else {
                        printf("뜻: ");
                        gets_s(kr[wordnum], 30);
                        printf("\n");

                        wordnum++;  // 저장된 단어 개수를 누적한다.
                }
        } while (wordnum < MAX);
}


//  <3. 단어 테스트하기>
void WordQuiz() {
        printf("< 3. 단어 맞추기 게임 >\n\n\n");
        
        // 로또 프로그램 참고 (p.329)  
        int randnum(); {  // 함수 선언식이 아닌 표현식에서는 세미콜론 필요?
                srand (time(NULL));
                int i, j;
                int dup_check[MAX - 1] = { 0 };  // 500개 자리에 0이 들어있음 → 생성된 적 없는 난수 번호 자리는 1
                for (i = 0; i < (wordnum - 1); i++) {
                        j = (rand() % wordnum);  // 현재 30개 단어 저장 → 30개 숫자(0~29)에서 랜덤으로 하나 생성
                        while (dup_check[j] == 1)
                                j = (rand() % wordnum);  // 중복 시, 반복생성
                        dup_check[j] = 1;  // 중복 안 될 시, 생성한 난수 번호 자릿값을 1로 만들기
                } return j;
        }
        
        printf("나타낼 언어를 입력하시오\n1번: 영어→뜻 맞추기\n2번: 뜻→영단어 맞추기\n 숫자 입력: ");
        int lang;
        scanf("%d", &lang);

        if (lang < 1 || lang>2) printf("※1과 2만 입력하시오※");

        else {
                switch (lang) {

                        char ans[30] = { 0 };

                case 1: {
                        int i = randnum();  // 현재 저장된 단어 갯수만큼.. 중에서 난수 생성 → i
                        char ans[30];
                        printf("%s ▷ ", eng[i]);
                        scanf("%s", &ans);
                        getchar();
                        if (strcmp(ans, kr[i]))
                                printf("정답!");
                        else
                                printf("땡!");
                } break;

                case 2: {
                        int i = randnum();
                        char ans[30];
                        printf("%s", kr[i]);
                        scanf(" ▷ %s", &ans);
                        getchar();

                        if (strcmp(ans, eng[i]))
                                printf("정답!");
                        else
                                printf("땡!");
                } break;
                default:
                        printf("※오류※");
                }
        }
}



영단어 암기 프로그램인데
WordQuiz 부분을 다 주석처리하면 단어추가하고 단어 보기 기능은 제대로 작동 하거든요

근데 WordQuiz를 추가하면 오류가 떠요

randnum() {내용} 이 부분에 자꾸 구문오류 나서  
랜덤난수 생성부분은 따로 돌려봤는데 제대로 작동을 했어요

근데 또 계속 디버깅 하다 보니 '지정된 파일을 찾을 수 없습니다' 하며 프롬프트조차 안 뜨고
LNK1120, LNK2019 뜨는데 검색해도 뭔 소린지 모르겠어요



  Hit : 359     Date : 2023/05/30 12:31



    
cd80 int randnum(); { // 함수 선언식이 아닌 표현식에서는 세미콜론 필요?
이 줄에 randnum() 이후에 세미콜론을 실수로 추가하신듯 하네요
링킹에러는 에러메세지를 같이 올려주셔야 알 수 있을 듯 합니다
2023/05/31  
  오류 좀 찾아주세요 [1]     marunim
05/30 358
3203 비밀글입니다  124     minsub87
08/17 1
3202   c언어 segmentation fault:11 오류 질문드립니다![2]     leebk1124
05/21 1676
3201   C++함수관련 질문이에용!![3]     1999dylee
05/11 1543
3200   파이썬 지문 드립니다.[1]     kksh1107
04/24 1329
3199   리버싱의 세번쨰 꽃 - 역랑-     nninni79
04/20 1889
3198   달고나 문서 쉘코드[1]     ghjk645
03/24 1343
3197 비밀글입니다  c언어 소수 값     adwefq
04/29 0
3196   C언어 소스질문입니다![5]     an0088
01/05 4165
3195   C++ /// 빌드 에러 ㅠㅠ[1]     guichanta
08/23 2058
3194 비밀글입니다  c언어 도와주세요ㅠㅠ     su6339
04/06 0
3193   해킹을 배우려고하는데[3]     zoodem04
03/26 3776
3192   c언어를 배우고싶어요 ![7]     dwc07238
02/11 3605
3191   스택이 쌓이는 방향에 관해서!![1]     hackxx123
12/10 2904
3190   해킹툴에서 ip 없이 하드에 심는거에는 어떤게 있을까요?[2]     aowlrgmlals
11/27 3521
3189   C언어 하는데 double 실수를 넣은데 자꾸 0.0이 나와요[2]     fatou10336
11/20 2931
3188   dumpcode.h 이해좀 도와주세요 .[1]     cm6418
11/06 2727
3187   c언어 알고리즘 질문입니다.[3]     alstn8150
10/12 3044
3186     [re] c언어 알고리즘 질문입니다.     dafher
05/13 1395
3185   c언어 소스 질문 뭐가 문제인지ㅜㅜㅜㅜ[2]     sjjh96
05/23 3812
1 [2][3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com