참고 (나도코딩) : https://www.youtube.com/watch?v=q6fPjQAzll8&t=4639s
C언어를 배운다면 C++, C#, Java, Python 등의 언어를 쉽게 배울 수 있다.
C언어에서 "포인터"가 가장 어려운 부분이다.
실습 : 경찰서 조서 쓰기
cf)
1) c언어에서 주석처리는 // 를 사용한다
여러 문장을 주석처리 하고싶다면, 문장의 시작과 끝에 다음과 같이 작성해준다.
/* 여러 줄의
문장을 주석처리
하고 싶을 때 */
2) main 함수 안의 내용 끝에는 모두 ; 를 붙여준다.
3) 우분투에서 한글로 작성하고 싶다면 shift + spacebar를 눌러주면 한,영 전환이 된다.
#include <stdio.h>
int main(){
int age = 12;
printf("%d\n", age);
age = 13;
printf("%d\n", age);
return 0;
}
여기서 %d 는 정수형 값을 출력하라는 의미이다.
그 값은 콤마(,)뒤에 나오는 변수들을 출력한다.
여기서는 콤마 뒤에 age 밖에 없으므로 12가 출력된다.
그 다음 줄인 age = 13에서는 이전에 age를 int로 받아주었기 때문에 int로 지정할 필요가 없다.
위의 코드를 실행한다면 출력값으로는
12
13
이 출력 된다.
1) gedit printfscanf.c 로 파일을 만들어주고 위 코드를 입력해주고 저장한다.

2) gcc printfscanf.c 로 컴파일을 해준다.

(여기서 의문점 : 이전에 실행했던 hello.c 파일을 먼저 컴파일 했는데, 다시 printfscanf.c 를 컴파일 해주면 아래와 같이 a.out이 마지막으로 컴파일해준 파일로 덮여쓰게 된다.
이를 해결하기 위해서 어떻게 해야할까)

일단 실행은 잘 되는 것 같다.
의문점을 해결하기 위해 구글링을 해본 결과, 각각의 c파일을 독립적으로 컴파일 해주기 위해서는 다음과 같이 코드를 작성하면 된다.
gcc hello.c -o hello
gcc printfscanf.c -o printfscanf
그러면 다음과 같이 실행 파일이 독립적으로 생성되며, 각각 실행을 할 수 있다.

위 코드에서 주석처리 한 후, 코드를 작성하고 실행해보았다.
#include <stdio.h>
int main(){
/*int age = 12;
printf("%d\n", age);
age = 13;
printf("%d\n", age);
return 0;*/
//실수형 변수에 대한 예제
float f = 46.5f;
printf("%f\n", f);
/* 이렇게 출력하게 되면 숫자뒤에 0이 많이 출력된다.
0을 원하는 만큼 출력하고 싶다면 다음과 같이 작성하면 된다.
f 앞에 .원하는 만큼의 소수점 자리수 를 입력*/
//printf("%.2f\n", f);
return 0;
}
실수형에는 float 말고 double도 있다.
차이점
정밀도(Precision):
float: 단정밀도(single precision) 부동 소수점 형식으로, 약 6-7자리의 십진수 정밀도를 가집니다.
double: 배정밀도(double precision) 부동 소수점 형식으로, 약 15자리의 십진수 정밀도를 가집니다.
메모리 크기(Size):
float: 4바이트(32비트)를 사용합니다.
double: 8바이트(64비트)를 사용합니다.
사용 예시:


상수는 변하지 않는 수이다.
한 번 정의하면 바뀌지 않는다.
#include <stdio.h>
int main(){
/*int age = 12;
printf("%d\n", age);
age = 13;
printf("%d\n", age);
return 0;*/
//실수형 변수에 대한 예제
/*float f = 46.5f;
printf("%.2f\n", f);
double d = 4.428;
printf("%.2lf\n", d);*/
int YEAR = 2000;
/*여기서 YEAR는 정수로 받아왔다.
이 아래에 YEAR = 2001; 이 있다면
밑의 출력값은 2001 로 바뀌게 된다.*/
printf("태어난 년도 : %d\n", YEAR);
//하지만 아래처럼 int 앞에 const를 붙여 상수로 정의 해주면 YEAR는 바꿀 수 없는 변수로 정의된다.
//const int YEAR = 2000;
//printf("태어난 년도 : %d\n", YEAR);
return 0;
}
키보드 입력을 받아서 저장하는 것
(python에서 input() 과 같은 의미)
#include <stdio.h>
int main(){
int input;
printf("Enter value : ");
scanf("%d", &input);
printf("value : %d\n", input);
return 0;
}

여러개의 정수를 받고 싶을 때
#include <stdio.h>
int main(){
/*int input;
printf("Enter value : ");
scanf("%d", &input);
printf("value : %d\n", input);*/
int one, two, three;
printf("Enter 3 int valuee : ");
scanf("%d %d %d", &one, &two, &three);
printf("First : %d\n", one);
printf("Second : %d\n", two);
printf("Third : %d\n", three);
return 0;
}

#include <stdio.h>
int main(){
/*int input;
printf("Enter value : ");
scanf("%d", &input);
printf("value : %d\n", input);*/
/*int one, two, three;
printf("Enter 3 int valuee : ");
scanf("%d %d %d", &one, &two, &three);
printf("First : %d\n", one);
printf("Second : %d\n", two);
printf("Third : %d\n", three);*/
char c = 'A';
printf("%c\n", c);
char str[256];
//scanf("%s", str, sizeof(str));
scanf("%255s", str);
printf("%s\n", str);
return 0;
}

문자열을 출력시 %s 를 사용한다.
문자 출력시에는 %c 를 사용.
입력을 할 때 띄어쓰기를 하면 그 이후의 문자는 사라진다.
#include <stdio.h>
int main(){
char name[256];
printf("What's your name?");
scanf("%s", name);
int age;
printf("Age?");
scanf("%d", &age);
float weight;
//int weight으로 작성했었지만 소수점을 나타내기 위해 flaot 사용
printf("Weight?");
scanf("%f", &weight);
float height;
//int weight으로 작성했었지만 소수점을 나타내기 위해 flaot 사용
printf("Height?");
scanf("%f", &height);
char crime[256];
printf("Crime?");
scanf("%s", crime);
//Information of criminal
printf("\n\n---Information of criminal---\n\n");
printf("Name : %s\n", name);
printf("Age : %d\n", age);
printf("Weight : %f\n", weight);
printf("Height : %f\n", height);
printf("Crime : %s\n", crime);
return 0;
}
- 주의점 : scanf에서 숫자를 불러올 때는 꼭 &를 앞에 붙여주어야 한다.
