묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C언어
저도 6분 30초경 &end가 이해가 잘 안되요
함수가 작동하는 구조가 이게 맞는지 궁금합니다.매개변수로 이중 포인터를 집어넣으면 이중 포인터가 가리키는 포인터의 메모리 공간에변환할 수 없는 문자의 공간의 주소를 대입해주는 게 맞나요?이게 맞다면 굳이 그냥 포인터에 주소를 대입해 주는 게 아니라이중 포인터를 매개변수로 이중 포인터가 가리키는 포인터에 주소를 대입해주는 이유가 뭔가요?
-
해결됨홍정모의 따라하며 배우는 C언어
2분 13초경 if (new_line)이 있어야 하는 이유
new_line = strchr(line, '\n'); 에서 line 문자열에서 '\n'을 찾으면new_line에 포인터를 대입하고 못 찾으면 NULL 캐릭터를 대입하는데포인터를 대입하고 *new_line = '\0';을 실행시키면 의도대로 되는 것이고널 캐릭터를 대입하고 *new_line '\0'을 실행시켜도 문제는 생기지 않을거 같아서if (new_line) 이라는 문장이 없어도 괜찮을 거 같은데 왜 있는 건가요?널 캐릭터를 대입하고 *new_line '\0'을 실행시키면 문제가 되서 그런건가요?아니면 다른 이유가 있는 건가요?
-
해결됨홍정모의 따라하며 배우는 C언어
strstr 함수 구현 질문
함수들을 직접 구현해보는 게 좋다고 하셔서 sprintf() 함수를 제외하곤 전부 구현하려고 노력해봤는데strstr함수는 어떻게 해야 할지 모르겠어서 구글링을 해봤는데https://blog.naver.com/tipsware/221371715770이런 글을 발견했어요코드를 따라치다 이해가 안되는 부분이 생겼는데while (*p_find_pos != 0 && *p_pos != 0 && *p_pos == *p_find_pos)에서 *p_find_pos != 0와 *p_pos != 0이 둘 다 존재하는 이유가 궁금합니다.strstr함수가 어떤 문자열에 특정 문자열이 포함되어있는지 확인하는 함수인데만약 어떤 문자열과 특정 문자열이 완전히 똑같다면 while의 조건문에서*p_pos == *p_find_pos 만 있으면 while문이 멈추지 않고 무한히 돌게 되니널 캐릭터를 만나면 멈출 수 있게 *p_find_pos != 0나 *p_pos != 0 둘 중에 하나는 있어야 한다는 건 알겠는데왜 둘 다 조건문에 있어야 하는지 잘 모르겠습니다.강의 내용이 아니라 질문하기가 좀 그랬지만 이런 질문글을 올릴만한 곳을 찾지 못해 여기에 올립니다. 답변 항상 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
이중 for 문 별찍기 예제 관련 질문
이중 for문 별찍기 예제가 잘 이해 되지않아서 별이 아닌 값을 출력하는것으로 바꿔서 실행했습니다 i 의 값은 그냥 0,1,2,3,4 로 나오는데 j 값은 01, 1 / 02,12,2 로 다른 형태로 나오네요 j이 0~4까지 증가하면서 i와 같아지기전까지 ( j < i ) 비교하게 되면서 비교되는 i값이 같이 나오는건가요?
-
해결됨독하게 시작하는 C 프로그래밍
문자(배)열 복사하는 함수 만들기
질문드립니다. 1.size_t를 하시는 이유는 nsiez처럼 예외처리를 위해서 표시하는 건가요?문제에서 첫번째 매개변수의 메모리 크기가 되도록 구현하기 위해서 사용하는 건가요?해당 for문만(strlen 사용 없이)위에 작성하더라도 구현은 되는 것으로 처음에 작성했습니다. 그렇게 해도 Deepcopy에는 어긋나는게 없는지 궁금합니다.만약 위 사진과 같이 return을 하면 지역 변수 주소 반환 오류에 해당하나요? 여기서 szBufferDst는 주소상수 즉 &szBufferDst[0]이 기준요소 이므로 위에 함수에서 포인터를 붙여서 사용하는 건가요? 약 반나절 동안 고민해서 풀어봤습니다만 속이 시원하게 풀리지 않네요 ㅠㅠ 제가 이해를 잘한건지 궁금해서 오늘은 질문이 조금 많습니다. 양해부탁드려요.🤓
-
미해결홍정모의 따라하며 배우는 C언어
이게 왜 120이랑 5가 나올까요
나름 잘 이해했다고 생각했는데 어떤 부분을 잘못 이해하고 있길래... #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> long loop_factorial(int n); long recursive_factorial(int n); int main() { int num = 5; printf("%d\n", loop_factorial(num)); printf("%d\n", recursive_factorial(num)); } long loop_factorial(int n) { int sum = 1; for (int i = 1; n >= i; n--) sum *= n; return sum; } long recursive_factorial(int n) { int sum = 1; sum *= n; if (n > 0) recursive_factorial(n - 1); return sum; }
-
미해결홍정모의 따라하며 배우는 C언어
인자 인수 매개변수
인자란게 인터넷에서 찾아봤을 때 글마다 의미가 다른데 인자는 어떤 건가요
-
미해결홍정모의 따라하며 배우는 C언어
배열의 subscript(index)는 0보다 커야 한다?
realm과 realm_tax 변수를 배열로 만들었고, 배열로 만들어진 각각의 공간에 일일히 데이터를 지정해뒀더니, int realm[10]에 딸려있는 realm[0]에 오류가 나더군요. 오류내용은 제목과 같이 "배열의 사이즈는 0보다 커야 한다." 였습니다. realm[0]에 커서를 대어보니 error-type이란 정보를 볼 수 있었습니다. 이거 어떻게 해야 오류를 내지 않수 있나요?
-
미해결홍정모의 따라하며 배우는 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를 출력했을 때 나오는 수를 어떻게 해석하는 건지 잘 모르겠습니다.