PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/04/16 13:51:12
Name 제로스
Subject C언어 segmentation fault (core dump) 이런 메세지가 뜹니다.
비쥬얼 스튜디오에서 실행했을때는 정상적으로 실행이 되는데 시그윈으로 실행을했을때는

단어를 입력하세요:*s*s*                  <- *s*s단어 입력
segmentation fault (core dump)

이렇게 출력이됩니다.. 어디가 문제일까요?;;;

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define SIZE 20

void closetest(int state);
int check(char *word, char *exp);


int main()
{
        FILE *file1,*file;
        char str[SIZE];
        char word[SIZE];
        char ch;
        int PatternCheck,WordCount=0;
        int i;

        for(i=0;i<5;i++){
                file1=fopen("c:\\sample2.txt","w");
                file=fopen("c:\\sample.txt","r");
                if(file==NULL){
                        printf("file open error!\n");
                        return 1;
                }
                if(file1=NULL){
                        printf("file1 open error!\n");
                        return 1;
                }
                
                printf("단어를 입력하세요:");               
                scanf("%s",word);

                while(!feof(file)){
                        ch=fgetc(file);
                        if(isalpha(ch)==0)
                                ch=' ';
                        fputc(ch,file1);
                }
                
                closetest(fclose(file));
                closetest(fclose(file1));

                file1=fopen("c:\\sample2.txt","r");
                if(file1==NULL){
                        printf("file1 open error!\n");
                        return 1;
                }

                while(!feof(file1)){
                        fscanf(file1,"%s",str);
                        PatternCheck=check(str,word);
                        if(PatternCheck==1){
                                WordCount++;
                                printf("%s\n",str);
                        }
                }

                closetest(fclose(file1));
                printf("총 %d개의 %s를 찾았습니다.\n",WordCount,word);
        }
        return 0;
}

void closetest(int state){
        if(state!=0){
                printf("file close error!\n");
        }
}

int check(char *word,char *exp){
        if( strlen(word)==0 && strlen(exp) ==0 )
                return 1;

        if(word[0]==exp[0])
                return check(word+1,exp+1);

        if(exp[0]=='?')
                return check(word,exp+1)||check(word+1,exp+1);

        if(exp[0]=='*'){
                if(strlen(word)!=0)
                        return check(word,exp+1)||check(word+1,exp);
                else
                        return check(word,exp+1);
        }
        return 0;
}                                                                

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
MoreThanAir
10/04/16 13:59
수정 아이콘
설계에서 코딩에서 디버깅까지 전부 도움을 받아서 합니까;
원래 질게에 숙제 해주면 안되는 곳 아니었나요...
Cazellnu
10/04/16 14:02
수정 아이콘
오타있네요
근데 윗분 리플을 보니 저는 여기까지 제로스님이 하신건줄알았는데 아닌가보네요
아스트랄
10/04/16 14:08
수정 아이콘
학교에서 배우는 수준은 그렇게 높지 않습니다.
처음에는 일단 혼자 힘으로 해결하시려고 노력하시기 바랍니다.
구글에서 해당 에러코드만 넣어도 왠만한 것들은 답들이 쫘악 나옵니다.
그리고 개발을 실제 하시다 보면 디버깅 할일은 정말로 많습니다.

처음에 언어를 배우실 때는 지식을 배우는 것이 물론 중요하지만 그 이외에 개발을 어떤 방식으로 해야 하는지, 모르는 것이 있으면 어디서 어떻게 찾아봐야 하는지 이런 방법을 배우는 것에도 중점을 두시기 바랍니다.
처음에는 남이 가르쳐 주는대로만 하면 되지만 나중엔 혼자 길을 찾아가야 하는 일이 오니깐요.
Cazellnu
10/04/16 14:18
수정 아이콘
모어댄에어님 말씀처럼 전공자라면 이정도는 혼자 해결 할 수 있어야합니다. (냉정히 말하면 이것조차 해결하지 못하면 전공하는 의미가..)
당장에야 물어보고 해결할 수 있으면 길이 빨라서 좋지만 그러다 시험땐, 그러다 졸업하고 실무땐..
언제까지나 쉽게 해결 될 수있는 길이 있는건 아니니까요.

뭐 그렇지만 아주 처음이라면 막막하고 개념자체라던가 사고패턴이 잡혀있지 않아서 그런경우도 있으니 이해는 되네요.
그래도 뭐든지 처음이 어려운법이니까 조금만 인내심을 더 가지고 생각을 해보면서 안되면 한숨이라도 쉬고 담배라도 한대 피고
몇일밤을 지새고 생각해서 나온게 틀리고 틀리고 결국엔 맞아가면 운우지락의 쾌감보다 더할겁니다.
(근데 지금도 농땡이치면서 일안하는 제가 이런말 하기엔 좀 부끄럽네요)

나머지 조언한가지 드리자면 무작정 코드 타이핑부터 시작하는거보단(타이핑하다 생각하다 타이핑하다.. 좀 안좋은 버릇입니다.)
전체적인 플로우와 로직을 그리고 예외상황들(이것을 생각해내는 부분이 중요합니다. 경우의 수와 예외를 생각하고 확장성과 재사용성 ..
그러고보니 교과서에 실릴법한 이야기군요)을 생각하고 그것을 토대로 그림(굳이 정식적인 형태를 따르지 않더라도 자신만의 규약도 상관없습니다.)을 그리고
그후 작업을 들어가는게 낫습니다.
물론 지금처럼 간단한 프로그램은 그럴 필요가 없지만(그래도 작은프로그램부터 버릇을 들이는데는 의의가 있겠네요)
나중에 이러패턴이 익숙해지면 지금과같은 프로그램은 간단하니 위와 같은 과정이 머릿속에서 한번에 그려지며 자동으로 코드가 나올겁니다.
jinhosama
10/04/16 14:20
수정 아이콘
구글과 많이 친해지길 추천합니다.
10/04/16 14:23
수정 아이콘
매번 질게에서 도와드릴 수는 없는 노릇이고..ㅠㅠ
주변에 고수를 찾아서 물고기를 달라고 하지 말고 물고기를 잡는 법을 알려달라고 하세요;
10/04/16 14:27
수정 아이콘
...음 저보고 저걸 해결하라고 하면 아마 머리 쥐어 뜯을듯...아무래도 이쪽 전공인으로써의 자격이...ㅠ_-

정말인지 재귀는 아무리 생각하고 생각해도...길을 모르겠어요 크크크크

그냥 전 눈에 보이는데로 막코딩이 편한듯...

어디 재귀만 가지고 해결해야 하는 문제를 제공하는 사이트가 없으띾요-_-;;
10/04/16 14:48
수정 아이콘
처음에는 절반의 도움만 드리려고 했는데
마감일에도 진전이 없는것 같아서 그냥 알려드렸습니다.
아무래도 제가 타인의 유레카를 빼앗은것 같네요.
죄송합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
79334 컴퓨터가 자꾸 다운되거나 멈춥니다. [4] 맛강냉이1990 10/04/16 1990
79333 스타를 끊을 수 있는 방법??? [18] 티나한 핸드레2118 10/04/16 2118
79332 스카이 라이프 안테나가 팔릴까요? [3] 핸드레이크2739 10/04/16 2739
79331 동영상 이미지 저장에 대해 질문입니다. [6] KenShin2139 10/04/16 2139
79330 SSD 써보신 분 계신가요? [10] 피아2104 10/04/16 2104
79329 영어질문 입니다. [2] 졸린쿠키2095 10/04/16 2095
79328 진지하게 상담 글 올려보겠습니다. [6] EZrock2183 10/04/16 2183
79325 남성용 정장가방 추천 좀 부탁드립니다~ [7] 탄야3061 10/04/16 3061
79324 대학교 전과(문과대에서 이과대로)에 관해서 여쭤봅니다. [9] 지구6183 10/04/16 6183
79323 아수스 eee 넷북에 대해서 질문 드립니다.. [2] 나를찾아서2382 10/04/16 2382
79321 양동이에 대고 말하는게 본인 목소리인가요? [11] 김재혁3107 10/04/16 3107
79320 브레인 서버가 안들어가집니다.. 이상해씨2641 10/04/16 2641
79319 의료보험민영화에대한 글을 찾습니다 [3] 윤대협2141 10/04/16 2141
79318 핸드폰 구입 관련 (진짜 초보입니다) [2] 휘바2253 10/04/16 2253
79317 혹시 세컨드 라이프에서 건물을 지어보신 분 계신가요?? DEICIDE2237 10/04/16 2237
79316 C언어 segmentation fault (core dump) 이런 메세지가 뜹니다. [12] 제로스6390 10/04/16 6390
79315 본인의 진짜 목소리 [14] 김재혁4695 10/04/16 4695
79313 비타민 C 보충제 / 피로 회복제 추천 부탁드립니다. [13] 망이2447 10/04/16 2447
79312 디카용 메모리구입 질문드립니다 V.serum2072 10/04/16 2072
79311 곰tv에서 스타리그도 시청할 수 있나요? [4] hoho9na2440 10/04/16 2440
79310 스타 시디키를 구합니다. [6] 생맥주2374 10/04/16 2374
79309 글 작성 시 '본문을 클립보드에 저장합니다' 관련입니다. [1] 소인배2084 10/04/16 2084
79308 c언어 질문좀 할께요..ㅠ [10] greensocks2109 10/04/16 2109
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로