묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
while(getchar() != '\n') continue;의 원리
while(getchar() != '\n') continue;가 입력 버퍼에 남아있는 개행문자들을 모두 읽어들이며 입력 버퍼를 클리어해주는 것이라고 알고 있는데 왜 그런지 원리를잘 모르겠어요getchar()에 들어가는 값이 줄바꿈 값이 아니면 다시 반복문으로 돌아가고, 줄바꿈이면 계속 한다는 뜻인 저while(getchar() != '\n') continue; 라는 코드가 어떻게 그런 기능을 하는 건가요?
-
미해결홍정모의 따라하며 배우는 C언어
내가 원하는 알파벳까지 출력하기
교수님께서 내신 문제 해설을 듣기 전 작성한 코드입니다. For 문 대신 while을 이용했는데요. 프롬포트 창에서는 컴파일러가 repeat 함수를 만난 이후부터는 진행되지 않습니다. 뭐가 문제인지 봐주실 수 있나요
-
해결됨독하게 시작하는 C 프로그래밍
Quick Sort 해봤습니다 (feat.너무 어렵습니다)
제 나름대로 머리 짜서 작성 했습니다 다만 약간 억지로 짜서 맞춘 느낌이 강합니다.숙제는 아니라고 하셨지만 숙제라는 생각으로 제출해봅니다.피드백 주시면 감사합니다😊😊
-
해결됨홍정모의 따라하며 배우는 C언어
15.12강 질문이 있습니다.
#include <stdio.h> #include <stdalign.h> int main(void) { printf("Alignment of char = %zu\n\n", alignof(char)); char ca; printf("&ca : %p %lld\n", &ca, ((long long)&ca) % 8); printf("&ca : %p %lld\n", &ca, ((long long)&ca) % 16); printf("\n"); char _Alignas(int) cb; printf("&cb : %p %lld\n", &cb, ((long long)&cb) % 8); printf("&cb : %p %lld\n", &cb, ((long long)&cb) % 16); printf("\n"); char alignas(8) cc; printf("&cc : %p %lld\n", &cc, ((long long)&cc) % 8); printf("&cc : %p %lld\n", &cc, ((long long)&cc) % 16); return 0; } [결과]alignas(n)를 지정하면 주소가 n의 배수인 메모리 위치에 객체를 할당하도록 하는 것은 이해했습니다. 첫 번째 줄의 출력에서 따로 정렬을 지정하지 않은 ca는 정렬 값이 1인 것은 확인했습니다.그러면 ca의 주소를 8, 16으로 나눈 나머지가 1이므로&ca : 00000097AA4FF614 1&ca : 00000097AA4FF614 1형태의 출력이 나와야 할 것 같은데왜 4바이트로 정렬을 지정한 cb와 결과가 같은 것인지 잘 모르겠습니다..
-
미해결독하게 시작하는 C 프로그래밍
강의 "16진수 표기가 사용되는 예" 에서의 질문
해당 강의에서 보여주시는 메모리 화면에서 메모리 주소 오른쪽에 있는 문자들은 앞에 0x가 따로 없는데도 16진수라고 하셨는데, 저 문자들은 그냥 16진수 읽기로 약속된 문자들 이라고 이해하면 될까요 ?? 그리고 그렇다면 왜 앞에 0x가 붙어있지 않은지도 알려주실 수 있나요 ??
-
해결됨독하게 시작하는 C 프로그래밍
입력 버퍼가 화면에 뜨고 있는 것을 말하나요?
제가 scanf("%s",stringarr)를 이용해서 콘솔 입력(키보드)에 데이터를 이용하면 1. 화면에 커서가 깜빡깜빡 거리면서 콘솔화면(모니터)창에 쓰는 값이 보이는데 이게 입력 버퍼인가요? (그리고 이러한 버퍼는 일반적으로 4kB까지 입력을 칠 수 있는 건가요?)아니면 입력 버퍼는 저희 눈에 안보이고 "CON"이라는 파일안에 들어가 있는 건가요? 이 부분이 혼동이 옵니다. 리눅스에 man puts 를 쳐서 설명을 보니 개행 문자가 딸려온다고 써져 있습니다. puts("")로 치면 출력버퍼안에 \n이 있다는 말인가요? 그렇다면 출력 버퍼는 \n으로 인해 비워지게 된건지 궁금합니다 질문과는 다른 이야기인데 4kB는 페이지 크기도 4kB인데 이게 무엇을 기준으로 나눈 건가요?? ps/ 수업을 너무 많이 듣고 정리하면서 이러한 개념들이 혼동이 생기네요... 마음은 급하고 배울건 많고, 배운건 또 안보면 까먹고 왕도가 없네요 하하.. 항상 열심히 수업듣고있습니다. 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
scanf 사용 시, null이 먼저 들어가고 \n이 나중에 들어 가는건가요?
버퍼 공부하다가 궁금합니다.제가 이해한 바로는\n은 I/O 버퍼를 비우기 위해 사용하는 이스케이프 시퀀스 라고 이해했습니다.string에서char Id[7] = {1} 라고 초기화를 주고scanf("%s",Id); 이라고하고 코드를 작성합니다.작성한 코드를 프로그램에 컴파일 한 이후 런 타임때,"null" 을 입력하고 엔터를 치면Id의 0번 주소의 값은n1번 주소의 값은u2번 주소의 값은l3번 주소의 값은l이 됩니다.그렇게 하고 개행 문자인 엔터를 칩니다. 이때 여기서 궁금증이 생깁니다.버퍼안에 \0와 \n 어느 게 먼저 들어가는 건가요? \0 을 이용해서 문자열을 모두 읽었다고 표시를 한다고 이해했습니다.이렇게 하고 엔터를 치면개행 문자 \n이 들어가는데실제 메모리 상에서는null\01\n 으로 찍히는지 궁금합니다.
-
미해결[쥬신게임아카데미 버거쌤] 완전 초보자를 위한 게임 C++
클래스의 개념과 구조체와의 비교 < 강의에서여
public: void Initialize(int iAtt) { /* 같은 클래스 내부에 선언된 함수에서는 private 멤버여도 접근가능 */ //this->iAtt = iAtt; iAtt = iAtt; iDef = 7; iHp = 100; iMp = 100; }=============아래는 메인 함수에서 출력한 코드예여=================== CPlayer Player_class; // 클래스 접근 Player_class.Initialize(10); Player_class.Output(); CPlayer Special_Player; Special_Player.Initialize(100); Special_Player.Output(); 제가 직접 친 거라서 코드 내용은 조금 다른데욥 위 멤버 함수 Initialize 코드에서 this->, (*this)가 생략? 된 거라고 하셨자나요this->iAtt = iAtt; 이렇게 출력하면 정상 출력이 되는데 iAtt = iAtt; 이 코드로 출력 하면 Player_class랑 Special_Player 둘 다 -858993460 이런 값이 나오더라구요! 이유가?? 멀까요???!!!근데 멤버 함수에서 받는 파라미터? 인자 이름을 바꾸면 정상 출력이 되긴 해여
-
미해결홍정모의 따라하며 배우는 C언어
while문에 {} 안치면 바로 밑에 있는 것만 반복하나요?
5.12 강의에서 while문에 {}을 안 썻는데 {}이 없을 경우 바로 밑에 있는 한줄만 조건에 부합하지 않을 때까지 반복하나요??
-
해결됨Windows 시스템 프로그래밍 - 기본
64KB 단위로 파일을 읽는 것에 대해 궁금한 점이 있습니다.
안녕하세요 선생님, 동기 파일 입출력을 설명해주시면서 64KB 단위로 파일을 읽어오는 이유에 대해 말씀해주셨는데, OS가 Page들을 할당한 후에 그 Page들을 묶어서 관리하는 크기의 단위가 64KB이어서 파일에서 읽어온 데이터를 저장할 버퍼가 특정 Page의 시작 주소부터 16개의 Page에 연속 되도록 데이터를 저장하기 위함으로 이해하면 될까요?
-
해결됨독하게 시작하는 C 프로그래밍
장치파일이 곧 드라이버를 구성요소 중 하나라고 봐도 될까요?
안녕하세요. 장치파일이 곧 드라이버를 구성요소 중 하나라고 봐도 될까요?드라이버를 조작하기 위한 인터페이스로 느껴지는데요. 제대로 이해하고 있는것인지 궁금합니다.아니라면, 드라이버와 장치 파일의 차이점이 궁금하고 각각 어떤 레벨에 위치하고 있는지 궁금합니다. 또한 필터를 통한다음 허용된 명령어일 경우에만 장치파일을 접근할 수 있는건지도 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
강의 내용 중 주석 Cannot change heart. Can change ...
강의 20분 중반대부터 보이는 // Cannot change heart. Can change the elements of heart가 이해가 가지 않습니다.heart는 배열이여서 바꿀 수 있다고 생각했는데 (바로 뒤에 요소 수정 가능이라고 나와있긴 해서 헷갈림)// Cannot change head.를 의도했는데 잘못 표기된 것인지 아니면 heart라는 배열의 이름에 접근할 수 없다는 뜻인지 모르겠습니다.감사합니다
-
해결됨독하게 시작하는 C 프로그래밍
형식이 다른 숫자의 연산
안녕하세요 선생님 다름이 아니라 수업시간에 정수 숫자를 하나 입력받아서 처음에는 3으로 나누고 출력 다음 줄은 double형식으로 변환해서 3으로 나누어 출력하는것은 error 없어 출력이 잘되는데요아래와 같이 정수를 입력받아 double형식으로 변환 후 정수와 나머지를 계산하면 오류가 뜨던데이것은 실수형식과 정수형식을 나눠서 나머지를 구하면 너무나 많은 나머지의 소수점 자리수가 나와서 출력이 안되는 것인가요?(double)x/3는 출력이 잘되고 (double)x%3은 실행이 안되는 이유가 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
4분경 질문
사진처럼 오류가 뜨면서 디버그가 안 된다고 하는데 어디가 문제인지 잘 모르겠어요. 오류 내용 보면 저장 위치랑 관련 있는 것 같은데 이리저리 뭘 해봐도 잘 안 되네요
-
미해결홍정모의 따라하며 배우는 C언어
강의와 다름
화면과 똑같이 코딩을 했는데 실행을 하면 Hello, world가 뜨는 게 아니라 그냥 검은 빈 화면만 뜨는데 뭐가 잘못된 건가요? 마지막 부분에서 F10 눌러도 Hello, world가 뜨는 게 아니라 똑같이 그냥 빈 화면만 뜨네요.
-
해결됨홍정모의 따라하며 배우는 C언어
double d = 0.0;으로 초기화하는 이유
위에서 다른 값들은 입력할 때 초기화를 시키지 않았는데 double d만 값을 초기화하는게 궁금합니다. 제 생각을 말씀드리면 앞의 예제들을 실행시켰을 때 값을 입력하지 않았음에도 어떠한 값이 이미 출력되더라구요. 이게 혹시 초기화를 시키지 않아서 발생했던 문제들인가요??
-
해결됨홍정모의 따라하며 배우는 C언어
9분 48초 (*(parr + 1))[1] 이게 이해가 잘 안되네요
(*(parr + 1))[1]을 제가 해석해보자면parr은 arr0을 가리킨다. 거기에 1을 더하면 arr1을 가리키게 된다.거기에 *를 붙이면 arr1이 가리키는 arr1[0]을 가리키게 된다.여기에 [1]를 붙이면? arr1[0][1]을 가리키게 되나? 아니면 arr1[1]을 가리키게 되나? 아니면 arr1[1]이 되나?출력값이 5인걸 보면 맨 오른쪽인것 같은데(*(parr + 1))은 &arr1[0]이고 거기에 [1]을 붙인다는 게 정확하게 무슨 뜻 인가요?어떤 식으로 작동하는건지 이해가 잘 안되요. parr[0]은 &arr0[0]이고parr[0][0]은 arr0[0]이다.라는 것과 비슷하게 작동하는 건가요? 항상 좋은 답변 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
주소끼리 뺄셈
안녕하세요 널널한 개발자님 강의를 듣고 있는 초보자 수강생입니다.강의를 듣던 중 궁금한 사항이 있어 질문드립니다.아래에서와 같이 pszData와 szBuffer는 주소인데 pszData-szBuffer처럼 주소끼리의 뺄셈이 원래 가능한건가요? 답변 부탁드리겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
필수 실습문제 1
안녕하세요독하게 시작하는 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); 이렇게 입력해도 실행이 되는 지 궁금합니다
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
CAN 통신에 사용되는 CANable 보드의 펌웨어
영상에서 사용되는 CANable 보드에 펌웨어 넣는 작업도 영상으로 올려주세요