안녕하세요 강사님 [필수 실습 문제] 세 정수 총합 계산하기 (누산)에서 강사님께서는 int input, total; 이렇게 해당 변수를 0으로 초기화하지않고 ctrl+F5로 실행을 시키셨더니 아래와 같이 쓰레기 값이 나오셨는데 제가 할때는 Total 값이 6으로 잘 출력되더라구요 제가 이전 코드에서 정답 코드로 실행을 한번 시키긴했는데 그값이 계속 유지되어 Total값이 6으로 출력이 되는 건가요? 그리고 강사님처럼 메모리창을 띄어서 보려고 Total 변수에 중단점(F9) 설정 후 디버깅(F5)를 눌렀더니 함수는 실행되어 Total : 6이라는 값이 출력은 되지만 "디버기가 실행 중일 때에는 사용할 수 없습니다. "라고 뜨고 또한 위쪽 메뉴가 모여있는 곳에서 디버그(D) - 창(W)을 눌러봐도 메모리창을 실행할 수 있는 메뉴가 보이지 않습니다. 이번 경우에도 이렇고 예전에는 가끔씩 이러던데 이러한 이유가 뭐고 어떻게하면 해결 할 수 있을까요?
안녕하십니까? 강사님! "콘솔 I/O 버퍼 메모리 추적하기" 강의 내용 중 아래와 같은 코드가 나오는데 잘 이해가 안됩니다. print_iobuf((IOBUF_TEST*)fp); 여기에서 fp 파일 구조체를 IOBUF_TEST* 변수로 해석하겠다는 뜻인지요? IOBUF_TEST는 구조체 자료형인데 포인터 변수로 해석한다는게 잘이해가 안됩니다. 자세한 설명 좀 부탁드립니다 수고하십시오.
선생님께서 말씀하신 대로 메모리 디버깅을 진행하였습니다. while문을 지날 때마다 기준 요소의 값 + 1 더하여 이동하는 것을 잘 볼 수 있었습니다. 그런데 메모리 디버깅을 보는 와중에 저렇게 붉은색으로 표시되는 메모리 값들을 발견했습니다. 왜 이렇게 표시되는 건지 중요한 건가 싶어서 질문드립니다. 다음 강의에서 찾았습니다~! 🤓
안녕하세요 선생님 섹션9 형식 문자 기반 문자열 입력강의에서 scanf_s와 get_s()의 차이점이 제가 이해하기론 scanf_s는 함수를 작성하고 콘솔창이 생기고 값을 입력할때 값 입력 중간에 white space(스페이스바)를 입력하면 입력이 끊긴다. ex) 1. '안녕하세요' 는 입력이 되지만 2. '안 녕하세요' 는 '안' 이라는 글자만 입력이 되고 끊긴다. 라고 이해를 했는데 맞을까요? get_s()는 이와 반대로 값 입력 중간에 white space(스페이스바)를 입력해도 입력이 유지된다. ex) 1. '안녕하세요' 는 입력 가능 2. '안 녕하세요' 입력하면 '안 녕하세요' 라고 white space까지 입력이 된다. 이게 맞을까요? 그리고 혹시 강사님께서 말씀해주신 것 이외에 scanf_s와 gets_s()의 차이점이 있을까요? 감사합니다.
코드를 작성하고 F5로 디버그를 하게되면 최종 결과값을 보여주기전에 콘솔창이 닫힙니다 crtl + F5(디버그하지 않고 시작)으로 하면 최종값까지 나온뒤 아무키를 눌러야 콘솔창이 닫힙니다 코드의 문제인가 싶어 검토하고 해설영상 보며 똑같이 타이핑을 해도 디버그를 하고 콘솔창이 뜨면 최종결과값이 뜨지않고 콘솔창이 닫힙니다 예로 뺄셈 연산 직접구하기에서 두 정수를 입력하는거까지는 잘 넘어가는데 뺄셈의 결과값이 출력되기전에 콘솔창이 닫혀버립니다 비쥬얼스튜디오의 설정이 무언가가 잘못되있는걸까요?
해당 강의에서 보여주시는 메모리 화면에서 메모리 주소 오른쪽에 있는 문자들은 앞에 0x가 따로 없는데도 16진수라고 하셨는데, 저 문자들은 그냥 16진수 읽기로 약속된 문자들 이라고 이해하면 될까요 ?? 그리고 그렇다면 왜 앞에 0x가 붙어있지 않은지도 알려주실 수 있나요 ??
제가 scanf("%s",stringarr)를 이용해서 콘솔 입력(키보드)에 데이터를 이용하면 1. 화면에 커서가 깜빡깜빡 거리면서 콘솔화면(모니터)창에 쓰는 값이 보이는데 이게 입력 버퍼인가요? (그리고 이러한 버퍼는 일반적으로 4kB까지 입력을 칠 수 있는 건가요?) 아니면 입력 버퍼는 저희 눈에 안보이고 "CON"이라는 파일안에 들어가 있는 건가요? 이 부분이 혼동이 옵니다. 리눅스에 man puts 를 쳐서 설명을 보니 개행 문자가 딸려온다고 써져 있습니다. puts("")로 치면 출력버퍼안에 \n이 있다는 말인가요? 그렇다면 출력 버퍼는 \n으로 인해 비워지게 된건지 궁금합니다 질문과는 다른 이야기인데 4kB는 페이지 크기도 4kB인데 이게 무엇을 기준으로 나눈 건가요?? ps/ 수업을 너무 많이 듣고 정리하면서 이러한 개념들이 혼동이 생기네요... 마음은 급하고 배울건 많고, 배운건 또 안보면 까먹고 왕도가 없네요 하하.. 항상 열심히 수업듣고있습니다. 감사합니다.
버퍼 공부하다가 궁금합니다. 제가 이해한 바로는 \n은 I/O 버퍼를 비우기 위해 사용하는 이스케이프 시퀀스 라고 이해했습니다. string에서 char Id[7] = {1} 라고 초기화를 주고 scanf("%s",Id); 이라고하고 코드를 작성합니다. 작성한 코드를 프로그램에 컴파일 한 이후 런 타임때, "null" 을 입력하고 엔터를 치면 Id의 0번 주소의 값은 n 1번 주소의 값은 u 2번 주소의 값은 l 3번 주소의 값은 l 이 됩니다. 그렇게 하고 개행 문자인 엔터를 칩니다. 이때 여기서 궁금증이 생깁니다. 버퍼안에 \0와 \n 어느 게 먼저 들어가는 건가요? \0 을 이용해서 문자열을 모두 읽었다고 표시를 한다고 이해했습니다. 이렇게 하고 엔터를 치면 개행 문자 \n이 들어가는데 실제 메모리 상에서는 null\01\n 으로 찍히는지 궁금합니다.
안녕하세요. 장치파일이 곧 드라이버를 구성요소 중 하나라고 봐도 될까요? 드라이버를 조작하기 위한 인터페이스로 느껴지는데요. 제대로 이해하고 있는것인지 궁금합니다. 아니라면, 드라이버와 장치 파일의 차이점이 궁금하고 각각 어떤 레벨에 위치하고 있는지 궁금합니다. 또한 필터를 통한다음 허용된 명령어일 경우에만 장치파일을 접근할 수 있는건지도 궁금합니다.
안녕하세요 선생님 다름이 아니라 수업시간에 정수 숫자를 하나 입력받아서 처음에는 3으로 나누고 출력 다음 줄은 double형식으로 변환해서 3으로 나누어 출력하는것은 error 없어 출력이 잘되는데요 아래와 같이 정수를 입력받아 double형식으로 변환 후 정수와 나머지를 계산하면 오류가 뜨던데 이것은 실수형식과 정수형식을 나눠서 나머지를 구하면 너무나 많은 나머지의 소수점 자리수가 나와서 출력이 안되는 것인가요? (double)x/3는 출력이 잘되고 (double)x%3은 실행이 안되는 이유가 궁금합니다.
안녕하세요 독하게 시작하는 C언어 프로그래밍 필수 실습문제 1번 질문있습니다. 문제는 나이와 이름을 입력받아 출력하는 문제인데요 저는 이름을 입력받을 문자배열을 선언할때 어떤 길이가 나올지 모르니 최대한 많은 공간을 미리 확보하기 위해 char ch[ ] = {0}; 으로 선언했는데 이렇게 하면 오류가 뜨고 선생님처럼 char ch[32] = {0}; 문자배열의 길이를 선언해야 오류 없이 실행되더라구요 문자배열을 어느 길이로 입력 받을 지 모르니 저처럼 설정하면 왜 안되는 걸까요? 또한 scanf_s("%d%c", %x); 구문에서 입력받은 변수가 int 형으로 정수를 입력 받았는데 그럼 scanf_s("%d%d", %x); 이렇게 입력해야 맞는 것 아닌가요? 왜 scanf_s("%d%c", %x); 이렇게 입력해도 실행이 되는 지 궁금합니다
강사님께서 설명하시는 버블정렬에 대한 설명을 듣고 질문 드립니다. 해당 영상의 초기 부분에 버블정렬에 대해 설명을 해주시는데, 해당 설명이 버블정렬에 대한 설명이 맞는지 문의드립니다. 설명해주신 내용은 선택 정렬이 아닐까 생각이 듭니다. 버블정렬은 맨 왼쪽 부터(작은수) 정렬되는 것이 아닌 가장 오른쪽(큰 수)부터 정렬이 되는 것으로 알고 있습니다. 1회차에서 가장 큰 값이 정해지고 그 다음 회차를 반복하면서 그 다음 으로 큰 수가 정해지는 방식으로 알고 있는데요, 그런데 영상 속 설명에서는 가장 왼쪽 값(작은 수)가 정해지면 1회차가 종료되며, 그 뒤에 그 다음으로 작은 수를 구하는 방식으로 진행하는 것으로 설명하는 것으로 보입니다. 확인 부탁드립니다 감사합니다. 참조 링크: https://ko.wikipedia.org/wiki/%EB%B2%84%EB%B8%94_%EC%A0%95%EB%A0%AC