프로그램을 실행하면 해당 프로그램의 실행을 위한 메모리 공간이 운영체제에 의해서 미리 마련이 된다. 그리고 바로 이 메모리 공간 내에서 변수가 선언되고, 문자열이 선언되는 것이다. 운영체제에 의해 할당된 메모리의 구조 코드 영역, 데이터 영역, 힙 영역, 스택 영역 코드 영역 실행할 프로그램의 코드가 저장되는 메모리 공간. 따라서 CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행 데이터 영역 전역변수와 static으로 선언되는 static 변수가 할당된다. 즉 프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램 종료 시까지 남아있게 된다. 스택 영역 지역변수와 매개변수가 할당된다. 이 영역에 할당된 변수들은 선언된 함수를 빠져나가면 소멸된다. 힙 영역 프로그램을 구현하다 보면, 이 데이터..
텍스트 데이터와 바이너리 데이터를 동시에 입출력하기 서식에 따른 데이터 입출력 : frpintf, fscanf fscanf는 파일의 끝에 도달하거나 오류가 발생하면 EOF를 반환한다. 쓰기 #include int main(void) { char name[10]; char sex; int age; FILE* fp; fopen_s(&fp,"friend.txt", "wt"); int i; for (i = 0; i < 3; i++) { printf("이름 성별 나이 순 입력: "); scanf_s("%s %c %d", name,10, &sex,1, &age); getchar(); //버퍼에 남아있는 \n의 소멸을 위해서 fprintf(fp, "%s %c %d", name, sex, age); } fclose(f..
파일과 스트림, 그리고 기본적인 파일의 입출력 fopen 함수호출을 통한 파일과의 스트림 형성과 FILE 구조체 #include FILE * fopen(const char * filename, const char * mode); => 성공 시 해당 파일의 FILE 구조체 변수의 주소 값, 실패 시 NULL 포인터 반환 FILE * fp = fopen("data.txt", "wt"); // 출력 스트림의 형성 FILE * fp = fopen("data.txt","rt"); // 입력 스트림의 형성 fopen(출력)write #include int main(void) { FILE * fp=fopen("data.txt", "wt"); if(fp==NULL) { puts("파일오픈 실패!"); return -1..
typeof 선언 : 기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것을 목적으로 하는 선언 typeof 선언에 있어서 새로운 이름의 부여는 가장 마지막에 등장하는 단어, 구별 위해 앞에 대문자로 표시 typeof int INT, typeof unsigned int UINT, typeof struct point POINT #include struct point { int xpos; int ypos; }; typedef struct point Point; typedef struct person { char name[20]; char phoneNum[20]; int age; } Person; //person을 생략해도 돼. 단, struct person man;은 불가능(어차피 안해) int main(..
구조체 : 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구 struct person{ char name[20]; char phoneNum[20]; int age; }; 구조체 변수 : struct type_name val_name; struct person man; 구조체 변수에 접근 man.name="홍길동"; 구조체 변수에 문자열 저장을 하려면 strcpy 함수를 호출해야 한다. ex) strcpy(man1.name, "홍길동"); 구조체 변수에 초기화 과정에서는 문자열 저장을 위해서 strcpy 함수를 호출하지 않아도 된다. ex) struct person man={"홍길동", "010", 22}; 구조체 배열 struct point arr[4]; 구조체 변수와 포인터 #include st..
문자와 문자열 관련 함수 프로그램상에서 모니터와 키보드를 대상으로 데이터를 입출력 하기 위해서는 이들을 연결시켜주느 다리가 필요 다리의 역할을 하는 매개체 : 스트림(한 방향으로 흐르는 데이터의 흐름) 콘솔 입출력을 위한 '입력 스트림'과 '출력 스트림'은 프로그램이 실행되면 자동으로 생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림이다. stdin 표준 입력 스트림 키보드 대상으로 입력 stdout 표준 출력 스트림 모니터 대상으로 출력 stderr 표준 에러 스트림 모니터 대상으로 출력 문자 출력 함수 : putchar, fputc int putchar(int c); int fputc(int c, FILE * stream); => 함수호출 성공 시 쓰여진 문자정보가, 실패 시 EOF 반환 문자 ..
알고리즘 문제를 요즘 안 풀어서 그런지 몰라도 달팽이 배열을 풀지 못했다. 구글링해서 코드를 한 번 보고 이해해서 다시 풀었다. #include int main(void) { int len; //입력받는 배열의 길이 int num; //배열의 요소(1,2,3~~) int arr[50][50]; //입력할 배열 int i, j; int x, y; //배열의 행,열 int t; //가로,세로가 각각 커졌다가 작아지는 걸 t에 부호를 붙여서 이용 int jmax; //열의 최대값 printf("달팽이 배열의 길이를 입력해라"); scanf_s("%d", &len); num = 1; jmax = len; x = 0, y = -1; t = 1; while (0 < jmax) { for (i = 0; i < jma..