본문 바로가기

C언어

(13)
[C언어] This function or variable may be unsafe 에러 문제 해결 C언어를 하다보면 코드상 문제가 없어 보이지만 에러가 발생한다면 고려해 봐야할 해결법이다. 에러에 저런 문구가 포함 되어있는 경우에 해결방법이다. (여기서 --- 는 어떤 변수나 함수를 대체한다.) '---' :This function or variable may be unsafe. Consider using --- instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 먼저, 에러가 뜨는 원인부터 간단하게 설명하면, C언어 책이나 인터넷 강좌에서 가르치는 함수들 중 몇개는 함수에 취약점이 있기 때문에 에러가 나는것이다. 위에 에러코드도 자세히 읽어보면 '이 함수나 변수는 안전하지 않을 수 있습니다.' 라고 적혀있다. 유명한 해킹 기법인 스택 버퍼 ..
[C 언어] 현재 콘솔창의 커서 좌표 알아내기 커서 위치 알아내는 코드 #include #include int main() { CONSOLE_SCREEN_BUFFER_INFO presentCur; // 콘솔 출력창의 정보를 담기 위해서 정의한 구조체 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &presentCur); //현재 커서의 위치 정보를 저장하는 함수 printf("%d, %d\n", presentCur.dwCursorPosition.X, presentCur.dwCursorPosition.Y); //구조체의 저장한 값 출력 printf("\n\n "); GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &presentCur..
[C 언어] 무작위로 숫자 생성하기 (난수 생성기) 숫자를 랜덤으로 뽑아서 출력하게 하는 코드이다. 난수 생성기 #include #include //srand, rand를 사용하기 위한 헤더파일 #include // time을 사용하기 위한 헤더파일 int main() { srand(time(NULL)); // 난수 초기화 for (int i = 0; i 0 ~ 4사이의 랜덤한 숫자 ex) (ran..
[C언어] 피라미드 별찍기 - 1 직각 삼각형 피라미드 - 1 #include int main() { int num; //변수 선언 (입력받는 변수) scanf("%d", &num); //숫자를 입력받는 함수 for (int j = 0; j < num; j++) { for (int i = 0; i < j+1; i++) { printf("*"); } printf("\n"); } return 0; } (실행결과) 위에 for 구문이 작동하는 순서를 나열하자면 1. 5를 입력받는다. 2. 첫번째 for 구문에서 j=0이 정의됨과 동시에 j < 5라는 반복 조건이 걸림.(j가 5가되면 반복을 빠져나감) 3. 두번째 for 구문에서 i=0이 정의됨과 동시에 i < j+1라는 반복 조건이 걸림.(i가 j와 같을때 까지만 반복한다) 4. 두번째 fo..
[C 언어]do while로 최소 한번은 무조건 출력후 반복하기 do while do while도 while처럼 반복문이지만, 최소 한번은 먼저 출력한 후 반복을 수행 한다. while은 조건식에 따라서 반복 횟수가 정해지고 그에 따라 반복을 하는데, do while은 먼저 한번 출력 후 반복을 하게 된다. do while ex) #include int main() { int i = 0; do // 말 그대로 밑의 코드를 일단 수행한다 { printf("최소 한번은 출력한다!\n"); i++; } while (i == 0); // 그리고 반복의 범위를 지정 return 0; } (실행결과) do while 2 ex) #include int main() { int i = 0; do // 밑의 코드를 먼저 수행 { printf("최소 한번은 출력한다!\n"); i++; ..
[C 언어] 반복문을 원할때 빠져나가게 할 수 있는 break, continue break break가 있는 그 자리에서 바로 반복문을 빠져 나오게 하는 함수이다. 웬만해서 조건식과 함께 쓰이며 원하는 곳에서 반복을 빠져 나오게 할 수 있다. continue continue가 있는 그 자리에서 continue 코드 밑에 있는 코드들은 무시하고 반복을 진행하게 된다. 조건을 주어서 원하는 결과값만 출력하게 할 수 있다. break와 continue의 차이점은 break는 반복을 완전히 빠져 나가는 것이고, continue는 반복을 진행하되 이후의 코드는 무시를 하고 진행을 하게 된다. break ex) #include int main() { for (int i = 0; i < 30; i++) // 0~29 (30)번 반복 { printf("%d\n", i); if (i == 15) /..
[C 언어] 반복문(for문) 조건문(if)문과 섞어 사용 반복문을 어느정도 이해했다면 이제 그 조건문과 반복문을 섞어서 사용 할 수 있거나, scanf로 반복 횟수를 지정해 주는것도 가능 해야 한다. 조건문 & 반복문 ex) #include int main() { for (int i = 1; i
[C 언어] Call by value, Call by reference 차이점 설명 C언어에서 함수를 사용할 때, 값을 넘겨주는 방식이 크게 2가지가 있는데 Call by value 와 Call by reference가 있다. Call by value Call by value는 기본적으로 C언어에서 지원하는 방식으로, 함수의 매개변수에 인자값을 복사한다. 그럼, 함수가 어떤 변수로부터 받은 인자값과 매개변수는 복사되어서 값만 같을뿐, 별개의 변수가 된다. 결과적으로, 함수 안에서 매개변수 값이 변경되어도 원래의 변수값은 변하지 않는다. Call by value ex) #include void plusone(int a); // 함수 선언, plusone 괄호 안에 a변수는 매개변수이다 int main() { int a; printf("정수값 입력 : "); scanf("%d", &a); ..