본문 바로가기

C언어/C_지식_정리

(18)
[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 언어] JSON 파일을 이용해서 데이터 받아오기 kgabis/parson Lightweight JSON library written in C. Contribute to kgabis/parson development by creating an account on GitHub. github.com C에서 JSON 파일을 읽어들여서 사용할 수 있는 오픈소스코드이다. 들어가서 ZIP파일로 다운받고 압축을 풀면된다. 압축을 풀고 나서 나온 폴더 내부에 parson.c 와 parson.h를 복사해서 JSON 파일을 사용할 프로젝트 폴더에서 .c 파일과 .h파일들이 있는곳에 넣으면 된다. 사용할 JSON 파일도 역시 같은 폴더에 넣으면 된다. example.json { "Num": 1, "Greeting": "Hello", "DNum": 1.5, "array": ..
[C 언어] 현재 콘솔창의 커서 위치 바꾸기 콘솔창에 출력하고 싶은 위치를 바꾸고 싶다면, 밑에 코드를 이용해 간편하게 위치를 바꿀 수 있다. gotoxy ex) #include #include void gotoxy(int x, int y); int main(void) { printf("Luden0 Blog"); gotoxy(10, 10); printf("Hello Visitor"); return 0; } void gotoxy(int x, int y) { COORD Pos = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos); } (실행결과) 대부분 gotoxy라고 명명하고 사용하는데 편의에 따라서 gotoxy가 아닌 다른 이름으로 바꾸고 사용해도 무관하다. gotoxy의..
[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 언어]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