전체 글 226

파일 입출력

헤더파일 더보기 def.h #ifndef __DEF_H__ // 정의되지 않으면 if not define #define __DEF_H__ #define _CRT_SECURE_NO_WARNINGS #endif student.h //#pragma once #ifndef __STUDENT_H__ #define __STUDENT_H__ typedef struct _STUDENT { //_STUDENT 와 ST 같으면 안된다. char name[10]; //이름 int kor; int eng; int math; int hap; double avg; char grade; } ST; ST st; //구조체 변수 선언 (전역 변수) extern void init_student(); //함수 프로토 타입 void sho..

C/C 2022.10.11

모듈화 2 - 구조체

st_file_01.c #include "def.h" //def.h 는 보통 설정 정보를 넣는 다. //def.h 가장 위쪽으로 //" " 의미는 st_file_01.c 와 같은 폴더내에 위치 한다라는 뜻이다. #include //내부적으로 경로가 연결 (패스가 걸려있다.) #include "student.h" int main() { ST st1 = { "홍길동",100,90,80,0,0.0,'A' }; //이러한 사용방법도 존재한다. init_student(); show_student(st1); } student.c #include "def.h" #include #include #include "student.h" //함수 //학생 초기 정보 void init_student() { //문자열 복사 st..

C/C 2022.10.08

모듈화 1

기능별로 파일을 나눠 프로그래밍하는 것 예를 들면 계산기에서 필요한 기능 (더하기, 빼기, 나누기)을 나눠관리하는 것 >> 유지 보수성이 좋아진다. >> 이식성과 확장성이 좋아진다 파일을 나누더라도 완전히 독립 되는 것이 아님 main.c #include //내부적으로 경로가 연결 (패스가 걸려있다.) #include "add.h" //" " 의미는 main.c 와 같은 폴더내에 위치 한다 int main() { printf("%d\n", Add(5, 4)); } add.c #include "add.h" /* 소스파일에서 헤더 파일을 include는 아무 문제도 없다 하지만 헤더 파일에서 헤더파일을 include 하면 문제가 생길수도 있다. */ int Add(int a, int b) { return a..

C/C 2022.10.08

구조체 1

하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형 >> 똑같은 변수를 여러번 사용해야 하는 경우에 효과적 main() 밖에 사용(안에 있어도 상관 없음) typedef struct 구조체이름 { 자료형 변수명; 자료형 변수명; ... }구조체 별칭; typedef struct _STUDENT { char name[10]; //이름 int kor; int eng; int math; int hap; double avg; char grade; } ST; typedef는 자료형의 별칭을 만드는 기능 구조체 초기화 ST st1 = { "홍길동",100,90,80,0,0.0,'A' }; 구조체 변수에 접근 #define _CRT_SECURE_NO_WARNINGS #include //공통적인 정보를 구조체로 만..

C/C 2022.10.07

배열 2 - 출력

반복문을 사용하여 출력 int main() { int arr[10] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; //10개의 배열 for (int i = 0; i < 10; i++) { printf("%d", arr[i]); //반복문을 통한 출력 } } 배열의 크기가 바뀌면 반복문의 조건식도 바꿔야한다. sizeof 연산자를 사용하여 배열의 크기를 구할수 있다. sizeof(arr); //40 int형 변수 10개 모여 있어서 40이 출력 됨(바이트 단위) sizeof(arr)/sizeof(int); //10 sizeof를 이용해 int형 자료형 크기를 나눠줌 출력시 for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { ..

C/C 2022.10.06

gets() - 문자열 입력

gets()는 Visual Studio 버전에 따라서 지원하지 않을수 있다. 지원한다면 표준 입출력 함수 이므로 stdio.h 헤더파일의 선언이 필요하다 표준입력에서 문자열을 입력받아 사용자가 전달한 메모리에 저장하는 함수 >> 표준입력으로 들어온 문자열을 개행한 부분 앞까지 char* 타입의 문자열로 저장해주고, 자동으로 문자열 맨 끝에 '\0'을 넣어서 문자열을 완성 gets() 가 "문자열" 을 감지하는 기준은 개행(\n) 입력된 문자열을 char* , char[]로 저장해줌 Enter키를 누르기 전까지 공백을 포함한 모든 문자열을 입력 받음 gets(입력 받는 값의 주소); #include int main(){ char str[100]; gets(str); // char*, char[] print..

C/C 2022.10.05

C 포인터 예제

#define _CRT_SECURE_NO_WARNINGS #include int opration(int a, int b, char n); void opration2(int a, int b, char n, int res); void opration3(int a, int b, char n, int *res); int main() { //포인터와 변수 char ch = 'A'; char* p = NULL; p = &ch; // 주소값을 대입 //char* p = &ch; printf("ch가 가지는 값 : %c\n", ch); printf("ch 주소 값 : %p\n", &ch); printf("p가 가지는 값 : %p\n", p); printf("p가 참조하는 주소의 데이터 값 : %c\n", *p); //..

C/C 연습 2022.10.05

C 포인터 배열 접근 1

길이가 5인 배열 arr 선언 1,2,3,4,5 초기화 포인터 변수를 통해 모든 배열요소 2씩 증가 int main() { int arr[5] = { 1, 2, 3, 4, 5 }; int* ptr = arr; for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { printf("%d ", *(arr + i)); } printf("\n"); for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { *(ptr++)+=2; } for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { printf("%d ", *(arr + i)); } } #include int main() { int arr[..

C/C 연습 2022.10.04