11월, 2023의 게시물 표시

[Virtual Box] 가상머신 에러 E_FAIL (0x80004005), (VERR_SUPLIB_PATH_NOT_CLEAN) 해결 방법

이미지
Failed to load R0 module D:\/VMMR0.r0: The path is not clean of leading double slashes: 'D:\/VMMR0.r0' (VERR_SUPLIB_PATH_NOT_CLEAN). E_FAIL (0x80004005) 인터페이스: IConsole {6ac83d89-6ee7-4e33-8ae6-b257b2e81be8} 해결 방법 에러 이유 ( VERR_SUPLIB_PATH_NOT_CLEAN) 결론 부터 말하자면 Virtual Box 경로가 C 드라이브가 아닌 D드라이브 같은 다른 위치에 설치되면 발생한다. VirtualboxVM.exe는 Virtualbox의 설치 폴더에 있어야 한다. virtualization support 설정, windows 보안 꺼도 에러가  해결 안되고 혹시 가상머신을 다른 경로에 저장했다면  이 방법을 써볼것. Vitual Box  재설치 후 경로 C드라이브로 설정 1. Vitual Box 제어판 가서 삭제한 후 재 설치한다. 2. 설치 하면서 가상 머신을 C드라이브로 설치한다. 괜히 D드라이브로 바꾸지 말 것.(그냥 경로 건들지 말자.) 에러 때문에 2시간 허비 했다. 에러 해결 방법에 대해 한국어 글이 없어서 누군가는 보라고 올림. 출처 :  https://forums.virtualbox.org/viewtopic.php?t=96445

[C언어] scanf 함수 에러 해결하기 (Erorr : C4996)

이미지
scanf 함수 에러 해결하기(C4996) scanf 에러 오류 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project2 C:\Project2\Project2\FileName.c 8 scanf 사용하면 위와 같은 에러가 뜬다. 대충 scanf 함수는 더 이상 안전성을 보장하지 않아서 scanf_s 함수를 사용하라고 한다. 따라서 scanf_s 함수 를 사용하는 것이 바람직하다. scanf 함수를 강제로 사용 할 수 있는 방법이 몇 가지 있지만 간단한 2가지를 알아보자. 예시 코드 #include <stdio.h> int main() { char input[16]; printf("문자 입력 : "); scanf("%s", input); printf("%s\n", input); return 0; } 위에 코드가 예시다. 실행 시키면 에러 발생한다. 이제 scanf를 강제로 사용해 보자. SDL 검사 끄기 첫 번째 방법은 SDL 검사를 끄면 된다. 속성 -> C/C++ -> 일반 -> SDL 검사 아니요 자 이제 다시 코드를 실행 시켜보면 잘 실행 된다. 전처리기 추가하기 두 번째 방법은 아래와 같이 main 함수 위에 전처리기 3줄을 선언해 주면 된다. #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif 이것도 실행 시켜보면 잘된다. 다른 방법들은 복잡해서 굳이 알 필요가 없다. 마치며 처음에 말했던 것 처럼 scaf_s 함수 사용을 권장한

[C언어] 문자열 입력, 문자열 출력하기(scanf_s)

이미지
[C언어] 문자열 입력, 문자열 출력하기(scanf_s) 문자열 입력, 출력 함수들 문자열 입력 함수는 대표적으로 세 가지가 있다. 1. scanf_s 2. scanf 3. gets 문자열 출력은 printf 사용하면 된다. 안전성 문제 때문에  scanf_s 함수 사용을  마이크로 소프트에서 적극 권장하고 있다. scanf_s 함수 사용하여 문자열 입력 #include <stdio.h> int main() { char input[16]; printf("문자 입력 : "); scanf_s("%s", input, sizeof(input)); printf("%s\n", input); return 0; } 1. char를 배열로 선언해주고 %c 대신 %s로 입력 받으면 된다. 2. 주의 할 점은 sizeof(input)처럼 크기를 지정해 줘야 한다. 크기를 지정하지 않으면 에러 발생. C언어로 문자, 문자열 입력시 scanf_s를 사용하는 것이 바람직하다. 결과 아래부터는 사용을 권장하지 않는 함수다. gets 함수 사용하여 문자열 입력 #include <stdio.h> int main() { char input[16]; printf("문자 입력 : "); gets(input); printf("%s\n", input); return 0; } 결과 scanf 함수 사용하여 문자열 입력 #include <stdio.h> int main() { char input[16]; printf("문자 입력 : "); scanf("%s", input); printf("%s\n", input); return 0; }