몇시간동안 고민해서 만든거치고는 너무 간단하게 나왔네요...ㅠ
저 프로그램의 논리흐름 flow차트를 만들었는데요
틀린점과 보완할점이 있으면 알려주세요~
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
char terms[50][40];
char *file_name=\"terms.txt\";
void load_data(int *number);
void search_data(char data[][40], int number);
void sort_data(char data[][40], int number);
void upper_to_lower(char str[]);
void gotoxy(int x, int y);
int main(void)
{
int number;
load_data(&number);
sort_data(terms, number);
search_data(terms, number);
return 0;
}
void search_data(char data[][40], int number)
{
char input[40] = {\'\\0\'}, temp[40]={\'\\0\'};
int i, length, count1=0, count2=0;
do
{
gotoxy(1,1);
printf(\"용어입력>\");
length=strlen(input);
gotoxy(11+length,1);
input[count1]=getch();
system(\"cls\");
gotoxy(11,1);
printf(\"%s\", input);
gotoxy(1,3);
count2=0;
for(i=0; i<number; i++)
{
strcpy(temp, data[i]);
upper_to_lower(temp);
if(strncmp(temp, input, count1+1)==0)
{
printf(\"%-40s\\n\", data[i]);
count2++;
if(count2>5)
break;
}
}
if(input[count1]==27)
break;
count1++;
}while(1);
}
void sort_data(char data[][40], int number)
{
int i,j,min;
char temp1[39], temp2[39];
for(i=0; i<number-1; i++)
{
min =i;
for(j=i+1; j<number; j++)
{
strcpy(temp1, data[j]);
strcpy(temp2, data[min]);
upper_to_lower(temp1);
upper_to_lower(temp2);
if(strcmp(temp1, temp2)<=0)
min=j;
}
strcpy(temp1, data[min]);
strcpy(data[min], data[i]);
strcpy(data[i], temp1);
}
}
void gotoxy(int x, int y)
{
COORD Pos = {x-1, y-1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void load_data(int *number)
{
FILE *fp;
*number=0;
fp=fopen(file_name, \"r\");
if(fp==NULL)
{
printf(\"file open error!\\n\");
exit(1);
}
while(!feof(fp))
{
fgets(terms[*number], 39, fp);
(*number)++;
}
fclose(fp);
}
void upper_to_lower(char str[])
{
int i, length;
length=strlen(str);
for(i=0;i<length; i++)
str[i]=tolower(str[i]);
}
니가 생각해도 너무 쉽지 않겠냐? 요즘엔 초딩들도 저것처럼 하겠는걸
좀 더 복잡한걸 해봐
음.. 저 논리흐름의 순서나 내용은 맞는건가요??...ㅠㅠ