Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5255] 파일 읽기에 대한 질문입니다.
이카루스 [icarus147] 1515 읽음    2005-08-29 20:21
간단하게 만든 타자프로그램인데요. 배열에 파일에서 불러온 한문장을 배열의 각 라인에 넣으려고 하는데
잘 안되네요 ^^;; 제가 아직 내공이 모잘라서요. 조언 부탁드립니다.
문장용 파일에는
I am a boy.
You are a girl.
What's going on?
이렇게 3문장이 들어가 있습니다.

#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define NO1 10
#define NO2 3

void words(char *a[NO1]);
void statements(char b[NO2][20]);

void main(void){
    int i=0,j=0,sel=0;
    char *a[NO1],b[NO2][20]={"0"},quit=NULL;
                //*a[NO1]은 단어를 위한 배열
                //b[NO2][20]은 문장을 위한 배열입니다.
    FILE *fp1,*fp2;
    clrscr();
    fp1=fopen("d:\\taja.txt","rt");
    fp2=fopen("d:\\taja2.txt","rt");
                //파일 불러오기
    printf("Select 1:words 2:statements");
               //단어냐 문장이냐를 선택합니다.
    scanf("%d",&sel);
    fflush(stdin);
    switch(sel){
        case 1:
            for(i=0;i<NO1;i++){
                fscanf(fp1,"%s",a[i]);
                                                                //파일 속의 단어를 읽어 배열에 넣습니다.
            }
            while(quit!='q'){
                for(i=0;i<1;i++){
                    words(a);
                                                                                //함수 이용입니다.
                }
            printf("if you want to quit, please insert 'q'\n");
            printf("But if you want to keep, please insert 'n'\n");
            scanf("%c",&quit);
            fflush(stdin);
            }
            break;
        case 2:
            for(i=0;i<NO2;i++){
                for(j=0;j<20;j++){
                    fscanf(fp2,"%c",&b[i][j]);
                    if(b[i][j]==13)
                                                                                 //엔터값을 읽으면 중지시키도록 했습니다.
                        break;
                }
            }
            while(quit!='q'){
                for(i=0;i<3;i++){
                    statements(b);
                }
            printf("if you want to quit, please insert 'q'\n");
            printf("But if you want to keep, please insert 'n'\n");
            scanf("%c",&quit);
            fflush(stdin);
            }
            break;
    }
    fclose(fp1);
    fclose(fp2);
}

void words(char *a[NO1]){
    int ran,fir_time,fin_time,ty_no,i;
    float re_time;
    char *p;
    struct time t;
    randomize();
    ran=random(NO1);
    printf("%s\n",a[ran]);
    gettime(&t);
    fir_time=t.ti_sec+(t.ti_min*60);
    gets(p);
    gettime(&t);
    ty_no=strlen(p);
    fin_time=t.ti_sec+(t.ti_min*60);
    fin_time=fin_time-fir_time;
    re_time=((float)ty_no/(float)fin_time)*100;
    printf("type:%.2f total time:%d\n",re_time,fin_time);
    randomize();
}
void statements(char b[NO2][20]){
    int ran,fir_time,fin_time,ty_no,i;
    float re_time;
    char *p;
    struct time t;
    randomize();
    ran=random(NO2);
                //랜덤함수 사용입니다.
    for(i=0;i<15;i++){
        printf("%c",b[ran][i]);
    }
                //여기서부터 아래부분은 타자속도 측정을 위한 연산입니다.
    gettime(&t);
    fir_time=t.ti_sec+(t.ti_min*60);
    gets(p);
    gettime(&t);
    ty_no=strlen(p);
    fin_time=t.ti_sec+(t.ti_min*60);
    fin_time=fin_time-fir_time;
    re_time=((float)ty_no/(float)fin_time)*100;
    printf("type:%.2f total time:%d\n",re_time,fin_time);
    randomize();
}

잘못된 부분과 혹시 좋은 조언있으시다면 부탁드리겠습니다. 그럼 좋은하루 보내세요

+ -

관련 글 리스트
5255 파일 읽기에 대한 질문입니다. 이카루스 1515 2005/08/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.