묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
10분 15초경 질문
dest = "Start something"; // Error여기서 에러가 생기는 이유를 잘 모르겠어서 찾아보니 같은 질문이 있길래 답변을 봤습니다.https://www.inflearn.com/questions/684074답변을 보고 컴파일러가 안 해주도록 만들어진 거고 그 이유는 런타임에 내용을 바꾸고 싶다면한 글자씩 바꾸는 방식으로 사용하도록 의도적으로 그렇게 정해 놨기 때문이라고 답변해주신 건 이해가 됬습니다.그런데그렇다고 안해주는 이유가 아예 없는 것은 아닌데 "Start something" 같은 문자열은 컴파일 할 때 프로그램에 탑재됩니다라는 말씀이 이해가 잘 안됩니다.문자열이 컴파일할 때 프로그램에 탑재되는 거랑 컴파일 타임이 아니라 런타임에 내용을 바꾸고 싶다면한 글자씩 바꾸라고 의도적으로 정해 놓은 거랑 무슨 상관인지 모르겠습니다.답변 항상 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
이거 왜 질문이 두번씩 뜰까요
int main() { int c = 0; char z; while (1) { printf("Enter the letter of your choice : \na. averngers b. beep\nc. count q. quit\n"); z = getchar(); if (z == 'a') printf("Avengers assemble!\n"); else if (z == 'b') printf("\a"); else if (z == 'c') { printf("Enter an integer : "); scanf("%d", &c); for (int i = 1; c >= i; ++i) printf("%d\n", i); } else if (z == 'q') break; } return 0; } 왜 질문이 2번씩 나올까요
-
해결됨독하게 시작하는 C 프로그래밍
if문 중첩 버스요금 문제1
강사님 항상 좋은 강의 제공해주셔서 정말 감사합니다if문 중첩 부분 필 수 실습 문제 첫번째 문제에 관하여 질문 드릴 것이 있습니다.저 같은 경우는 아래와 같이 우선 20세 이상이냐 여부를 기준으로 2분할 하면서 들어갔는데, 답은 잘 나오는것 같습니다. 근데 혹시나 제가 잘못 생각한 부분이 있을지 강사님께 확인받고자 질문글 올립니다. 새해 복 많이 받으세요! 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
문자열 크기와 null character 위치.
안녕하세요,문자열(문자형 배열)을 정의할때, 문자열 리터럴의 크기와 문자형 배열의 size가 같으면 null character가 붙지 않는 것 같은데 이 경우 왜 붙지 않는지 궁금합니다. 그림 처럼 디버거로 찍어보고 null character가 붙지 않는다고 판단했습니다.그리고 추가로, 출력했을 때 하기 그림처럼 이상한 한자가 나오는 이유는 printf 가 문자열을 출력하다가 null character를 만나지 못해 메모리의 엉뚱한 곳에 저장되어있는 쓰레기 값을 읽어오다가 컴파일러가 멈췄다 라고 이해하면 될까요?마지막으로, 그렇다면 char 형 배열을 선언할 시 리터럴의 크기보다 1만큼 크게 해줘야 하는지 궁금합니다.null character가 printf() 함수 사용시 용의성을 위해 문자열끝에 붙여지는 것이라면, 바꿔말하면 printf 를 사용하지 않을거라면 굳이 필요없으니까 제가 한것처럼 배열 크기와 리터럴 크기를 일치시키는게 좋을 것 같은데 맞게 생각했는지 궁금하니다.
-
해결됨독하게 시작하는 C 프로그래밍
문자(배)열 복사 strcpy_s
이 사진의 노란색 형광펜 화살표 부분에 대해서 질문드립니다.맨 마지막 강의 부분에서 pszHeap이 가지고 있던 위치정보가 동적할당 한 부분의 기준 요소의 주소였는데 strcpy_s를 사용함으로써 pszBuffer가 가지고 있던 위치 정보가 저장되었다고 생각했습니다.그래서 제 생각에는 동적할당한 부분에서 출발이 아니라 pszHeap에서 부터 형광펜으로 szBuffer의 기준 요소로 가는 게 맞다고 생각합니다!제가 이해한 것이 맞는지 확인 부탁드립니다.
-
미해결홍정모의 따라하며 배우는 C언어
초기화
int_arr[10]={0,1,2,3,4,5,6,7,8,9}; 에서 배열을 초기화 했다는 것이 이해가 되지 않습니다
-
해결됨독하게 시작하는 C 프로그래밍
문자형(C언어 문자형)
C언어 자료형에는 정수형, 실수형, 유도형, 함수형, 무치형이 있다고 하셨는데 그럼 문자형은 배열 연산자 []가 있으니까 따로 생각 안하고 유도형에 포함되는 건가요?
-
미해결홍정모의 따라하며 배우는 C언어
24분 20초경 25분 5초경 질문
24분 20초경에char str1[6], str2[6];int count = scanf("%6s %6s", str1, str2); // run-time error위의 코드를 실행시키면 런타임 에러가 발생하는데 그 이유가 궁금합니다.교수님이 설명을 안하고 넘어가셔서 이걸 어떻게 이해해야 할지 모르겠어요.그리고 25분 5초경에int count = scanf_s("%5s %5s", str1, 6, str2, 6);5자리에 있는 숫자와 6자리에 있는 숫자가 달라도 괜찮은 건가요?이것도 설명이 없어서 어떻게 이해해야 할지 모르겠네요
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
자료 자체와 정렬된 인덱스 분리 (인덱스 정렬) - 인덱스 범위 코드에 버그가 있어서 질문 드립니다.
강사님 다름이 아니라 인덱스 검색의 SearchByIndexAgeRange에서 작은 버그가 있어서 해당 내용 공유 드립니다.검색 조건을 리스트에서 작은 값의 범위로 지정을 했을 시 아래 해당 코드에서 length 가 최소 값이 1이 되므로 항상 리스트의 작은 값이 출력이 되는 버그가 있습니다.동작에 대한 예시 화면입니다. 따라서 length 를 구한 다음 리스트에서 해당 USERDATA의 age 값을 max 값과 비교를 해서 max 값보다 작을 경우에만 해당 코드들이 동작하게 되어야 하는 것이 맞는 것 같습니다. 다음과 같이 코드 수정 시 동작 화면입니다.
-
해결됨독하게 시작하는 C 프로그래밍
[필수 실습 문제] 세 정수 총합 계산하기 (누산)
안녕하세요 강사님[필수 실습 문제] 세 정수 총합 계산하기 (누산)에서 강사님께서는 int input, total; 이렇게 해당 변수를 0으로 초기화하지않고 ctrl+F5로 실행을 시키셨더니 아래와 같이 쓰레기 값이 나오셨는데제가 할때는 Total 값이 6으로 잘 출력되더라구요제가 이전 코드에서 정답 코드로 실행을 한번 시키긴했는데 그값이 계속 유지되어 Total값이 6으로 출력이 되는 건가요?그리고 강사님처럼 메모리창을 띄어서 보려고 Total 변수에 중단점(F9) 설정 후 디버깅(F5)를 눌렀더니 함수는 실행되어 Total : 6이라는 값이 출력은 되지만"디버기가 실행 중일 때에는 사용할 수 없습니다. "라고 뜨고 또한 위쪽 메뉴가 모여있는 곳에서 디버그(D) - 창(W)을 눌러봐도 메모리창을 실행할 수 있는 메뉴가 보이지 않습니다.이번 경우에도 이렇고 예전에는 가끔씩 이러던데 이러한 이유가 뭐고 어떻게하면 해결 할 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
"콘솔 I/O 버퍼 메모리 추적하기" 강의 내용 관련 질문
안녕하십니까? 강사님!"콘솔 I/O 버퍼 메모리 추적하기" 강의 내용 중아래와 같은 코드가 나오는데 잘 이해가 안됩니다.print_iobuf((IOBUF_TEST*)fp);여기에서 fp 파일 구조체를 IOBUF_TEST* 변수로 해석하겠다는 뜻인지요?IOBUF_TEST는 구조체 자료형인데 포인터 변수로 해석한다는게 잘이해가 안됩니다.자세한 설명 좀 부탁드립니다수고하십시오.
-
미해결홍정모의 따라하며 배우는 C언어
float f5, double d5
16진수 0x1.1p1에서 0xb.ap1로 바뀌는 게 대응하는 문자라서 그런 건가요? 같은 1인데 왜 바뀌는 문자가 다른지 모르겠어요.f5와 d5를 출력할 때 %a는 정수 출력할 때 %d와 똑같은 역할인가요?그리고 f5와 d5를 출력했을 때 나오는 수를 어떻게 해석하는 건지 잘 모르겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
포인터와 배열 호환의 대하여
선생님께서 말씀하신 대로 메모리 디버깅을 진행하였습니다.while문을 지날 때마다 기준 요소의 값 + 1 더하여 이동하는 것을 잘 볼 수 있었습니다.그런데메모리 디버깅을 보는 와중에 저렇게 붉은색으로 표시되는 메모리 값들을 발견했습니다.왜 이렇게 표시되는 건지 중요한 건가 싶어서 질문드립니다. 다음 강의에서 찾았습니다~!🤓
-
미해결홍정모의 따라하며 배우는 C언어
7.8 4분26초에 !line_flag가 트루가 아니라면 이라고 하는데
맨 앞에서 이미 bool line_flag = false; 라고 대입 했으면!line_flag는 ! false여서 거짓이 아니라면 이라고 해야 되는 거 아닌가요??
-
해결됨홍정모의 따라하며 배우는 C언어
scanf 질문
질문1. float d = 0.00; scanf("%f", &d);일 때 사용자가 데이터를 입력하면, 데이터가 입력버퍼로 이동한다scanf는 입력버퍼에서 데이터를 읽어들일 때 형식지정자가 %f 이므로 float형으로 데이터를 변환한다%f와 저장할 변수의 타입이 일치므로 float형 변수 d의 메모리 공간에 데이터를 저장한다성공적으로 입력받은 아이템의 개수 1을 반환한다scanf가 이 과정대로 동작하는지 궁금합니다---------------------------------------------------------------질문2. 위 과정이 맞다면 double d = 0.00; scanf("%f", &d); printf("%f", d); 에서 사용자가 3.14를 입력하면3.14가 입력버퍼로 이동한다입력버퍼에서 3.14를 읽어들일 때 %f로 변환한다%f와 저장할 변수의 타입이 일치하지 않으므로 double형 변수 d의 메모리 공간에 저장하지 못한다성공적으로 입력받은 아이템의 개수가 없으므로 0을 반환한다이렇기 때문에 실행하고 어떠한 값을 입력하더라도 초기값인 0.000000이 출력되는 건가요?---------------------------------------------------------------질문3. unsigned ui; scanf("%i", &ui); printf("%i", ui); %i는 signed int 타입 변수의 형식지정자로, unsigned int형 변수 ui와 다른게 맞나요? 근데 사용자가 -123을 입력하면 어떻게 변수 ui의 메모리 공간에 -123을 저장해서 그것을 출력할 수 있는지 궁금합니다
-
해결됨독하게 되새기는 C 프로그래밍
강의자료 관련
강사님 강의자료 인쇄용으로 부탁드립니다!
-
미해결홍정모의 따라하며 배우는 C언어
실행 파일이 안만들어져요..ㅠㅠ
분명히 똑같이 파일경로 찾아서 환경변수 안 패스에 잘 넣고 했는데.. exe 파일 자체가 뜨질 않습니다.. 잘못된 점이 있나요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
강의자료 관련
강의자료 인쇄하려고하는데, 검정색 배경화면으로 나오는데 이거 인쇄용으로는 없나요? 너무 잉크 많이 쓰게 되는데 ..
-
미해결홍정모의 따라하며 배우는 C언어
2의 보수 방법에서 양수표현법
강의에서 설명해주신 2의 보수 방법에서, 양수를 표현하는 방법에 관해 질문이 있습니다. 강의에서 -5를 예로 드신 건 이해했는데, 반대로 5를 표현하려 할 때는 어떻게 되나요?5를 2진수로 변환->00000101(2)->보수:11111010(2)->더하기 1: 11111011(2)인데, 그럼 양수 5와 음수 -5의 구분이 안 되지 않나요?강의에서 첫 비트가 1이면 음수, 0이면 양수인 것으로 구분한다고 하셨는데, 8개 비트 앞에 부호에 해당하는 1비트를 더 둔다는 뜻인가요? 그러니까, (1/11111011->-5, 0/11111011->5) 이런 식으로 작동하는 건가요?좋은 강의 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
프로그램 작성 중에 scanf 값을 따로 안써도 되는지에 대해
교수님께서 작성하신 강의답안에서 질문이 있습니다. 보면 scanf함수를 따로 쓰지 않고 status = scanf("%d", &num);만 입력하셨는데 이렇게 적어도 scanf함수가 동작하는 이유가 궁금합니다. 또, 이 윗줄 바로 위에 scanf함수를 따로 실행해도 상관없는지도 궁금합니다.