모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    ozum2님의
    개인페이지입니다
    가입 : 12-04-08
    방문 : 665회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_13924
    작성자 : ozum2
    추천 : 0
    조회수 : 494
    IP : 14.42.***.207
    댓글 : 2개
    등록시간 : 2015/10/16 19:51:59
    http://todayhumor.com/?programmer_13924 모바일
    [질문/C] 저수준 파일 입출력
    옵션
    • 베스트금지
    • 본인삭제금지
    저수준 파일입출력을 사용해서 파일 속 단어를 정렬하는 프로그램입니다.
    고수준 파일입출력을 사용할 때와 같은 연결리스트 코드를 넣어 파일끝까지 글자를 확인해 단어로 만들어 연결리스트에 넣는 방법입니다.
    문제는 고수준 파일입출력에서 EOF까지 읽어서 insert_word를 해주면 이상없이 잘 작동하지만
    저수준 파일입출력에서 read를 사용해 0까지 가게되면 insert_word가 다 작동되다가 마지막에 Segmentation fault 가 납니다.
    Segmentation fault 가 포인터를 잘못 사용하게 되면 뜬다고 하던데 고수준에서는 되던게 저수준에서는 잘되다 마지막에만 안되
    어떻게 처리해야할지 감이 잡히지 않습니다.
    코드가 너저분하고 쓸데없이 길어도 한번 봐주시면 감사하겠습니다ㅜㅜ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <string.h>
    #include <fcntl.h>
    #include <ctype.h>
     
    typedef struct Word {
        char word[BUFSIZ];
        int count;
        struct Word *pre;
        struct Word *next;
    } Word;
     
    Word *create_word(char *s)
    {
        Word *new_word;
        new_word = (Word *)malloc(sizeof(Word));
        if(new_word==NULL) printf("error malloc\n");
        strcpy(new_word->word, s);
        new_word->count = 0;
        new_word->pre = NULL;
        new_word->next = NULL;
     
        return new_word;
    }
     
    void insert_word(Word **head, char *w)
    {
        Word *new_word = create_word(w);
        Word *= *head;
     
        if(*head == NULL)
        {
            new_word->count++;
            new_word->pre = *head;
            *head = new_word;
        }
        else if(strcmp(s->word, new_word->word)==1)
        {
            new_word->count++;
            new_word->pre = *head;
            new_word->next = s;
            s->pre = new_word;
            *head = new_word;
        }
        else
        {
            while(s->next != NULL)
            {
                if(strcmp(s->word, new_word->word)==-1)
                {
                    s = s->next;
                }
                else
                    break;
            }
            if(strcmp(s->word, new_word->word)==-1)
            {
                new_word->count++;
                new_word->pre = s;
                s->next = new_word;
            }
            else if(strcmp(s->word, new_word->word)==1)
            {
                s->pre->next = new_word;
                new_word->pre = s->pre;
                new_word->count++;
                new_word->next = s;
                s->pre = new_word;
            }
            else if(strcmp(s->word, new_word->word)==0)
            {
                s->count++;
                free(new_word);
            }
        }
    }
     
    main()
    {
        int fdr, fdw;
        Word *word;
        int c;
        char ch, buf, *buf_out, buffer[BUFSIZ];
        off_t cur, end;
     
        if((fdr=open("the_gold_bug.txt", O_RDONLY))==-1)
        {
            perror("open : the_gold_bug.txt");
            exit(1);
        }
     
        if((fdw=open("text.res2", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))==-1)
        {
            perror("open : text.res2");
            exit(1);
        }
     
        while(read(fdr, &buf, 1)>0)
        {
            c = toascii(buf);
     
            if((c>='a' && c<='z'|| (c>='A' && c<='Z'))
            {
                if(c>='A' && c<='Z')
                    c+=32;
                sprintf(&ch, "%c", c);
                if(*buffer==0)
                    strcpy(buffer, &ch);
                else
                    strcat(buffer, &ch);
            }
            else
            {
                if(*buffer != 0)
                {
                    insert_word(&word, buffer);
                }
                memset(buffer, '\0'sizeof(buffer));
            }
        }
     
        while(word)
        {
            sprintf(buf_out, "%s\t%d\n", word->word, word->count);
            write(fdw, buf_out, strlen(buf_out)*sizeof(char));
            word = word->next;
        }
     
        close(fdr);
        close(fdw);
    }
     
     
     
     

    cs

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    26
    질문. 동전 찾기 알고리즘 [3] 본인삭제금지 ozum2 16/04/02 21:15 41 0
    25
    초등학교 수학문제라는데 풀리지가 않아요 [3] ozum2 16/03/13 01:17 91 1
    24
    전월세 계약 관련 질문 드립니다 [3] ozum2 16/02/03 14:23 21 0
    23
    포항 여행가는데 펜션 좀 슈퍼빠월추천부탁드리겠습니다 ozum2 15/12/26 20:51 12 0
    22
    그래픽카드 인식 문제 [1] 본인삭제금지 ozum2 15/12/11 16:47 48 0
    21
    [C/질문] char 포인터 배열 초기화 [2] 본인삭제금지 ozum2 15/11/10 02:25 26 0
    20
    [C/질문] UNIX 명령어 만들기 본인삭제금지 ozum2 15/10/30 19:56 27 0
    19
    빙고짤 어디없나요 ozum2 15/10/17 19:53 102 0
    [질문/C] 저수준 파일 입출력 [2] 베스트금지본인삭제금지 ozum2 15/10/16 19:51 34 0
    17
    [질문] lex 의 패턴에 관해 [2] 본인삭제금지 ozum2 15/10/16 14:39 28 0
    16
    [질문/C] 정렬 연결 리스트 [1] 본인삭제금지 ozum2 15/10/12 23:26 24 0
    15
    [질문/C] sorted simply linked list [9] 본인삭제금지 ozum2 15/10/10 01:14 32 0
    14
    C로 문자열이 숫자인지 문자인지 구분하는 프로그램을 만들고 있습니다. [13] 본인삭제금지 ozum2 15/09/17 19:26 47 0
    13
    (질문글) 수경재배를 하려고 합니다 [4] 본인삭제금지 ozum2 15/06/01 15:15 31 0
    12
    돈가스라고 샀더니 피카츄 [5] ozum2 15/05/31 21:02 84 0
    11
    이게 어떤거라고 생각하시나요? [2] ozum2 15/04/20 11:28 159 0
    10
    신발에 관해 도움 좀 얻고싶습니다 [2] ozum2 15/04/19 14:28 40 0
    6
    블랙베리 수리 질문합니다 ozum2 15/02/18 15:05 29 0
    5
    처음이에요 [1] ozum2 14/09/29 20:46 29 1
    3
    흔한 멋쟁이 아빠 ozum2 13/05/12 12:07 24 1
    1
    애완동물 추천 좀 부탁드려요 [4] ozum2 13/01/04 20:52 61 0
    [1]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈