간단하게 만든 타자프로그램인데요. 배열에 파일에서 불러온 한문장을 배열의 각 라인에 넣으려고 하는데
잘 안되네요 ^^;; 제가 아직 내공이 모잘라서요. 조언 부탁드립니다.
문장용 파일에는
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();
}
잘못된 부분과 혹시 좋은 조언있으시다면 부탁드리겠습니다. 그럼 좋은하루 보내세요
|