안녕하세요. 저는 컴퓨터공학부 2학년생입니다...
이번에 복학해가지고 굳은머리 어떻게든 복원시키려 열심히 C언어 공부를 하고있습니다 ㅠㅠ
근데 제가 이 프로그래밍 언어 쪽을 좋아하는지라 복학얼마전에 인터넷에서 진짜 C언어 경지에 오른 사람들의 코드를 찾아봤었습니다...
"우와...이렇게도 생각할수있구나" 가 아니고
"....?? 이게 C언어야?" 라는 생각이 들더군요.
정말 아직도 많이많이 멀은것같습니다.
그래서 여쭤보고 싶은게 있습니다.
아래 제가 짠 코딩 스타일을 봐주시고 이것만은 방해되는 안좋은 버릇이자 스타일이다! 이렇게 고쳐라! 이런것과
C언어 코딩 고수분들의 실력이 되려면 어떻게 어떻게 공부를 해라.(모호한 질문같지만 ㅠㅠ 이 글을 봐주시는 고수님들께서 아래 코드를 보시면
아 얘는 어느 수준이구나 딱 느낌이 잡히실거같아서...그래서 여쭤보는겁니다 ㅠㅠ)
을 부탁드립니다.
//자동차의 연비를 계산하는 프로그램을 작성하여 보자. 사용자로부터 출발한 지점의 주행거리계의
//눈금과 도착한 지점에서의 주행 거리계의 눈금을 입력받는다. 또한 사용한 연료의 양을
//입력받는다. 자동차의 연비를 계산하여 화면에 출력한다.
#include <stdio.h>
#include <stdlib.h> //system("pause") 를 쓰기위해 선언
#include <ctype.h> //atoi()를 쓰기위해 선언
#define STR_LEN 100
struct fuel_efficiency{
char str[3][STR_LEN]; //텍스트 파일에서 세줄을 읽어 각각 저장할 다차원배열
char a_to_i[3][10]; //str에서 끝에 숫자만 따로 집어넣을곳
int point[3]; //str에서 a_to_i로 옮기기 위한 지점을 잡아주는 역할
int source[3]; //a_to_i의 문자열을 int 값으로 바꿔서 하나씩 저장
};
void txt_check(fuel_efficiency *pTEST); //텍스트 파일에서 각 줄마다 수치가 있는곳을 point에 입력시키는 함수
void receive_source(fuel_efficiency *pTEST); //str->a_to_i->source로 값이 옮겨지는 함수
double calculate(fuel_efficiency *pTEST); //연비를 계산하기위한 함수
void print(double x); //출력을 위한 함수
int main(void){
FILE *fp;
fuel_efficiency test;
int i;
double fuel_efficiency;
fp=fopen("fuel efficiency.txt","r"); // 출발한 지점의 주행 거리계 : 1234 <---텍스트 파일엔 이렇게 적혀있습니다.
for(i=0;i<3;i++){ // 도착한 지점의 주행 거리계 : 1274
fgets(test.str[i],STR_LEN-1,fp); // 사용한 연료 : 10
}
txt_check(&test);
receive_source(&test);
fuel_efficiency=calculate(&test);
print(fuel_efficiency);
fclose(fp);
system("pause");
return 0;
}
void txt_check(fuel_efficiency *pTEST){
int i,j;
for(i=0;i<3;i++){
for(j=0;j<STR_LEN;j++){
if(pTEST->str[i][j]==':'){ //텍스트내 ':'가 있는 곳을 찾아 그 값을 point변수에 집어넣는다
pTEST->point[i]=j;
}
}
}
}
void receive_source(fuel_efficiency *pTEST){
int i,j;
for(i=0;i<3;i++){
for(j=pTEST->point[i]+2;pTEST->str[i][j]!='\0';j++){
pTEST->a_to_i[i][j-pTEST->point[i]-2]=pTEST->str[i][j]; //point가 가리키는 곳부터 a_to_i배열에 집어넣고...
}
pTEST->source[i]=atoi(pTEST->a_to_i[i]); //a_to_i배열내 값들을 atoi 함수를 써서 int 데이터형으로 만들어 source배열에 각각 넣는다.
}
}
double calculate(fuel_efficiency *pTEST){
return (pTEST->source[1]-pTEST->source[0])/(double)pTEST->source[2]; //요건 그냥 연비 계산
}
void print(double x){
printf("연비는 %.2f km/l 입니다.\n",x); //출력
}