안녕하세요!
게시글
질문&답변
10.13 관련 출력 질문
안녕하세요? 질문&답변 도우미 durams입니다.printf는 지정한 여러 Conversion specifiers에 따라 인자를 해석합니다. 코드에서 보이는 %s는 인자를 문자열로 해석하며, 정확히는 주어진 인자를 '문자열이 시작되는 주소'로 인식하고 '문자열의 끝'이라고 인식되는 널 문자를 만날 때까지 출력하는 동작을 수행하게끔 합니다. 반면 %u는 인자를 부호 없는 정수로 해석하기 때문에 name[i]가 의미하는 주소 자체를 uint 타입으로 보고 출력하게 됩니다.aname을 1차원 인덱스만 사용하여 인덱싱한 aname[0], aname[1] ... 은 각 문자열의 시작 주소를 가리킵니다. printf에 인자로 전달하여 문자열을 출력할 수 있습니다.
- 1
- 2
- 18
질문&답변
이런 방식으로 작성해도 되나요?
안녕하세요? 질문&답변 도우미 durams입니다.입력 버퍼에 남은 개행 문자를 제거하는 적절한 코드는 while(getchar() != '\n') 입니다.while 문에 진입하기 직전에 입력 버퍼가 어떤 상태일지 고민해보시고, 해결이 되지 않는다면 다시 질문주세요.디버깅을 해보시는 것도 좋습니다.
- 0
- 2
- 59
질문&답변
강의 9.11의 12분 20초 경에 my_print_functions.h를 include 하는 이유?
안녕하세요? 질문&답변 도우미 durams입니다.네, 현재 예제에서는 my_print_functions.c 파일에서 #include "my_print_functions.h"가 없어도 동작하는 것이 맞습니다. 다만 이는 호출하고자 하는 함수에서 필요로 하는 선언이 printf 단 하나뿐인 매우 간단한 경우이기 때문입니다.함수 내에서, 외부에서 정의된 변수나 함수 또는 구조체 등을 사용한다면 모두에 대한 선언이 그 이전에 되어있어야 합니다. 이번 예제에서 #include 해준 게 그 예시라고 보시면 되겠습니다.강의에서 보여준 것은 일반적인 경우 이렇게 프로그래밍한다는 가이드라인이라고 생각하시면 될 것 같습니다.
- 1
- 2
- 32
질문&답변
텍스트 파일 읽기
안녕하세요? 질문&답변 도우미 durams입니다.Visual Studio에서 상대경로를 사용할 때 그 기준이 되는 디렉토리는 각 프로젝트 속성의 Working Directory가 결정합니다. 아래 이미지를 참고해서 $(ProjectDir)로 설정되어있는지 확인해주세요. (사진)만약 이렇게 설정하더라도 고쳐지지 않는다면 질문자님께서 두번째로 첨부해주신 이미지의 디렉토리(.exe파일들이 있는 곳)에 myfile.txt파일을 위치시키고 시도해보세요.현재 제시해주신 문제와는 관련이 없지만, 강의의 코드와는 다른 부분이 존재합니다. 결과에도 영향을 주는 부분이니 한 번 찾아보세요.해결이 되지 않는다면 다시 질문주세요.
- 1
- 2
- 33
질문&답변
3강 바이오스가 저장된 ROM
안녕하세요? 질문&답변 도우미 durams입니다.강의에서는 간단하게 개념을 훑기 위해 ROM(Read-Only Memory)에 BIOS가 저장되어있다고 설명을 했으나, 실제로는 ROM이라고 불리는 메모리에도 여러 종류가 존재합니다. 과거에는 정말로 공장에서 생산 시 한 번만 쓰기가 수행되고 이후에는 변경할 수 없는 형태만 존재했으나, 필요에 따라 생산 이후에도 내용을 수정할 수 있도록 여러 형태의 ROM이 등장했습니다. (말씀해주신 바이오스 업데이트 등의 이유) 최근 대부분의 메인보드에 사용되는 메모리는 ROM 중에서도 플래시 메모리의 일종이라고 보시면 될 것 같습니다.바이오스의 설정값 같은 경우는 CMOS라는 작은 메모리에 저장됩니다. 이 데이터는 컴퓨터가 꺼져있는 동안에도 메인보드에 있는 수은 건전지의 전원을 사용해 값을 유지합니다. (메인보드에서 동그란 은색 건전지를 보신 적이 있으실 수 있습니다) 여담으로, 이 CMOS는 컴퓨터가 종료되어도 값이 유지된다는 점에서는 비휘발성이라고 볼 수 있지만, 수은 건전지가 방전된다면 결국 휘발되기에 휘발성이 있다고도 볼 수 있습니다.
- 1
- 2
- 39
질문&답변
화면좌측 숫자 보이기
안녕하세요? 질문&답변 도우미 durams입니다.에디터 내의 line number 표시 기능을 말씀하시는건가요? 기본적으로 활성화되어있는 기능이지만, 모종의 이유로 질문자님의 환경에서는 꺼져 있는것 같습니다.Visual Studio 화면에서 위 메뉴 중 Tools -> Options... -> Text Editor -> All Languages 에서 Line numbers를 활성화해주시면 모든 언어의 소스 파일에서 line number를 표시할 수 있습니다.(사진)(사진)
- 1
- 1
- 42
질문&답변
10.7 함수 포인터 배열 질문
안녕하세요? 질문&답변 도우미 durams입니다.[] 연산자(subscript operator)는 본질적으로 포인터 연산이기 때문에 당연히 포인터에도 사용이 가능합니다. 사실 배열에 [] 연산자를 사용하는 것은 array-to-pointer decay(암시적으로 배열이 포인터로 변환됨을 의미함)를 거친 후 포인터 산술 연산을 통해 프로그래머가 지정한 인덱스의 원소에 접근하는 방식으로 동작합니다.포인터를 배열로도 쓸 수 있는건가요? : 그렇지는 않습니다. 포인터는 단순히 주소값과 해당 주소에 있는 비트 패턴을 어떤 타입으로 해석할지에 해당하는 정보만 가집니다. 배열은 여기에 추가로 사이즈(크기) 정보를 갖습니다.아래 코드의 printf는 모두 동일하게 3을 출력합니다. int arr[5] = { 1, 2, 3, 4, 5 }; int* ptr = arr; printf("%d\n", arr[2]); printf("%d\n", ptr[2]); printf("%d\n", *(arr + 2)); printf("%d\n", *(ptr + 2));
- 1
- 2
- 29
질문&답변
비주얼 스튜디오 2022
안녕하세요? 질문&답변 도우미 durams입니다.네 문제없습니다.
- 1
- 2
- 54
질문&답변
14.14 예제 질문
안녕하세요? 질문&답변 도우미 durams입니다.바이너리 형식이라는 개념에 대해 오해가 있으신 것 같습니다. 텍스트 파일도 결국 컴퓨터에 저장되는 값들은 이진 값들이며, 텍스트 파일 뷰어 프로그램(예 : 메모장)으로 보는 경우 이를 인코딩하여 사람이 인식할 수 있는 문자열 형태로 보인다는 것을 이해하셔야 합니다.또한 바이너리 형식과 바이너리 모드로 파일을 여는 것은 다르게 보아야 합니다.바이너리 형식 : 파일에 데이터가 저장된 방식.바이너리 모드로 파일을 여는 것 : fopen으로 파일을 열 때, mode에 "b"를 지정하는 것. 바이너리 형식으로 추가/저장되는 코드를 작성했다고 하셨지만, 제시해주신 코드를 보면 fopen에서 바이너리 모드를 사용하지는 않으며, 강의에서 제시한 정답 코드와의 주된 차이점은 입출력 함수로 fprintf/fscanf를 사용한 것 대신에 fwrite/fread를 사용했다는 점입니다. fprintf와 fscanf는 문자열에 대해 동작하도록 설계된 함수이기 때문에 개행 문자에 대한 처리가 자동으로 이루어지지만, fwrite와 fread는 그렇지 않습니다.바이너리 모드로 열고 fwrite와 fread로 입출력을 진행하더라도, 메모장에서 얼마든지 읽기/쓰기가 가능합니다. 위 코드를 실행했을 때 제대로 동작하지 않았던 이유는 개행 문자에 대한 고려가 없었기 때문입니다.프로그램이 제대로 동작하도록 충분히 고민하며 현 코드를 수정해보시고, 그래도 잘 모르겠다면 다시 질문주세요.
- 1
- 1
- 41
질문&답변
처음 c++ 수강하려는데요. 비주얼스튜디오 2022 다운로드해서 설치하면 되는건가요??
안녕하세요? 질문&답변 도우미 durams입니다.Visual Studio 2022 버전을 설치하셔도 강의 수강에는 문제가 없습니다. 초기 설정에 문제가 생기는 경우, 다시 질문주세요!
- 1
- 3
- 66