분류 전체보기 520

C언어 파일 입출력

파일 입출력의 기본 구조는 1. 파일 오픈 2. 파일 읽기/쓰기 3. 파일 닫기 이렇게 되어 있습니다. #include int main(int argc, char const *argv[]) { FILE* fStream; //FILE 구조체 포인터 변수 선언 // 오픈한 파일의 주소를 담기 위해서 fStream = fopen("c:\\a.txt","w"); //파일이름(경로), 모드(w,r,a)읽고쓰고추가 /*파일오픈이 성공하면 해당 내용의 정보를 실패하면 NULL값이 반환된다.*/ if(fStream) //NULL이면 거짓이 된다. { printf("파일생성 성공\n"); } fclose(fStream); //파일 닫기 return 0; } fopen() 함수의 인자 값에 대해서 처음으로 들어가는 것은 ..

C언어 구조체 (구조체 포인터 / typedef)

구조체는 비슷하게 정리할 수 있는 변수들을 묶어서 새로운 자료형으로 만드는 것을 말합니다. 예를 들어 학생의 정보중 학번 나이 이름을 저장한다고 했을 때 한 사람이 3개의 변수를 사용하게 됩니다. 그러면 200명은 600개의 변수가 있어야겠죠 이런 불편한 점을 해결할 수 있는 게 구조체입니다. #include //구조체 정의 struct Student { int id; int age; char * name; }; // 세미콜론 확인 int main() { //구조체 변수 선언 struct Student stu; //자료형 Student 의 변수 stu 선언 stu.id = 1001; //구조체 안 멤버에 접근하려면 . 연산자(직접접근) stu.age = 20; stu.name = "nano"; print..

C언어 변수 (지역/전역변수)

변수 - 저장공간 [지역 변수] 함수 내부에서 생성 생성한 함수 내부에서만 사용 가능 사용될 때 stack에 변수 공간 할당 함수 종료 혹은 리턴하면 할당된 지역변수 메모리 소멸 생성만 했을 때 쓰레기 값으로 초기화 [전역 변수] 함수 외부에서 선언 같은 소스 코드 내 모든 곳에서 사용 가능 컴파일 시 메모리 할당 프로그램 종료하면 메모리 소멸 생성만 했을 때 0으로 초기화 변수의 적용 범위 #include int global = 10; //전역 변수 생성 초기화 int func() //사용자 함수 { int x = 0; int y = 1; return x + y + global; } int main() // 프로그램 시작점 { int a = 0; a = func(); global += a; printf..

C언어 rand() srand() time() 함수 (난수 생성)

#include #include #include int main() { srand(time(NULL)); printf("%d\n",rand()); printf("%d\n",rand()); printf("%d\n",rand()); return 0; } rand() 함수는 stdlib.h에 선언되어 있습니다. 함수의 인자는 비워도 상관없습니다. 0~32767의 범위 중 무작위 수를 뽑아주는 함수입니다. #include #include int main() { printf("%d\n",rand()); printf("%d\n",rand()); printf("%d\n",rand()); return 0; } 그러나 위의 소스를 다시 실행하면 결과가 똑같이 나옵니다. 그 이유는 seed 값이 똑같기 때문입니다. sra..

C언어 제어문 (switch~case / break / continue)

지난 편 문제 while을 써서 1에서 100까지 출력 #include int main() { int a = 1; while (a= 20; a--) { printf("%d\n", a); } return 0; } switch case #include int main() { int a = 10; switch (a) { case 1: { printf("a==1\n"); break; } case 5: { printf("a==5\n"); break; } case 10: { printf("a==1\n"); break; } default: { printf("default\n"); break; } } return 0; } 조건에 맞는 경우에 찾아가는 형태입니다. switch() 안에는 식이나 값이 올 수 있습니다. 그..

C언어 증감 연산자 / 캐스팅 연산자 / sizeof 연산자

지난 편 문제 풀이 연산자의 우선순위를 먼저 파악하는 게 좋습니다. 증감 연산자 #include int main() { int a = 10; int b = 20; printf("a = %d \n",a); //10 printf("a++ = %d \n",a++); //10 /사용 후 증가 a = 11 printf("++b = %d \n",++b); //21 /증가 후 사용 b = 21 printf("a = %d b = %d\n", a, b); //11 21 return 0; } 증감 연산자는 변수의 값이 1+ 혹은 1- 되는 연산자입니다. 변수의 값이 변경된다는 것에 중점을 둡시다. 캐스팅 연산자 #include int main() { int a = 10; float b = 3.14; double c = 9..

C언어 관계 연산자 / 논리 연산자 / 대입 연산자

1 primary ( ) [ ] . -> 오른쪽 2 단항 * & ! ++ -- (datatype) sizeof 왼쪽 3 승법 * % / 오른쪽 4 가법 + - 오른쪽 5 관계 = 오른쪽 6 등가 == != 오른쪽 7 논리곱 && 오른쪽 8 논리합 || 오른쪽 9 대입 = += -= *= %= /= 왼쪽 관계 연산자 #include int main() { int a = 6; int b = 4; printf("%d \n",a = b);//a 가 b 보다 크거나 같은가 printf("%d \n",a == b);//a 와 b 가 같은가 printf("%d \n",a != b);//..

C언어 연산자 우선순위

#include int main() { printf("result : %d \n",10 + 20 * 5 - 5); printf("result : %d \n",(10 + 20) * 5 - 5); return 0; { 위의 소스 코드를 실행하면 결과가 어떻게 나올까요? 기본적인 사칙연산의 순서대로 나오게 됩니다. printf("result : %d \n",10 + 20 * 5 - 5); 이것은 곱하기 먼저 계산이 되고 왼쪽부터 오른쪽으로 계산됩니다. printf("result : %d \n",(10 + 20) * 5 - 5); 이것은 괄호 안의 내용을 먼저 하고 곱하기 빼기 순으로 됩니다. 연산자의 우선순위 1 primary ( ) [ ] . -> 오른쪽 2 단항 * & ! ++ -- (datatype) s..