묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
Step over 기능 문의
Step over의 정확한 기능이 이해가 되지 않아 문의드립니다. 강의 내용 중, F10은 들여다보지는 않고 실행 만을 시킨다고 표현하셨는데 정확한 의미가 이해가 되지 않아 문의 드립니다. 말씀 주신 들여다 본다 라는 표현이 F11로 한줄 씩 실행하는 거라면, F10은 살펴보지 않고 실행만을 한다는 게 구체적으로 어떤 의미 일까요..?
-
해결됨ESP32 IoT 개발 기초 - 하드웨어부터 FreeRTOS까지
[수강 전 준비 사항 관련]
강사님 안녕하세요,구매후 아직 강의를 듣고 있지는 않는데, 조만간 시작하려고 합니다.강의 초반 준비사항에서 아무 ESP32나 상관 없다고 하셨지만, 최대한 병목을 줄이기 위해 전체 커리큘럼을 따라갈 때 문제되지 않도록, 준비 사항을 미리 알고 싶습니다. (보드, 디스플레이, 브레드 보드 등등) 구체적인 구매처 정보까지 있으면 좋을 것 같습니다.감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
2.6 강의 따옴표 출력 규칙 문의
printf 함수 사용 시, 따옴표도 함께 출력하려면 하기 규칙이 맞나요..? printf("\" 내용\"") 이건 규칙이기에 그냥 받아들여야 하는 부분일까요? 거부 감이 드는 부분이 앞에 따옴표 " \ " 여기는 형태 상 printf(" 내용 ")의 따옴표가 먼저 나오고 특수하게 \ escape 기호가 들어간 후, 출력을 위한 " 가 들어간 것으로 받아 들여지는데 내용 뒤에 나오는 따옴표 형태에서 거부감이 드네요.\ "" <-- 형태상으로 "\" 내용 "\" 이렇게 되어야 \ escape 기호 내부에 따옴표 2개와 내용이 들어간 구조로 맞는 것 처럼 보이는데...실제로는 "\" 내용 \ "" 이게 맞는 형태라고 하니 거부감이 듭니다.(제 생각이 맞다는 게 아니라, 단순히 눈에 익숙하지 않아 문의 드립니다.)
-
미해결홍정모의 따라하며 배우는 C언어
int main 함수 관련 오류 문의
지난 번 , 2.5 변수 선언 예제를 위한 소스코드 파일 을 생성한 후 2.6 printf 함수 예제를 위해, 동일한 project 내 새로운 소스코드 파일을 생성하여 코드를 작성하였습니다. 이후 디버깅 진행 시, 오류가 발생하였는데(전처리기는 작성한 상태)오류 사유가, 이미 2.5 소스파일에서 main 함수를 사용하였는데 2.6에서 또 사용해서 발생한 문제로 인지하고 있습니다. 발생원인은 아는데, 이게 왜 문제가 되는지 이해가 되지 않아 문의드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
char 자료형을 가진 데이터는 항상 1byte 씩만을 차지하고, 그것을 가리키는 포인터는 64bit 체계 기준으로 항상 8byte 인 것으로 이해했습니다.그런데 동영상 2:40초부터 "1바이트라는 공간마다 64비트가 붙어 있는 게 아니다" 라고 말씀하셨는데, 위에 제가 이해한 내용이 틀리다는 의미일까요? 감사합니다.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
정처기 실기 대시 실 수업 강의 여부
주말코딩님 혹시 인터넷 강의 말고 실 수업으로 정처기 강의 가르치는 수업이 있나요? 전에 학생들을 가르친다고 들었는데 있다면 수강하고 싶어서 그러는데 있나요?
-
해결됨독하게 시작하는 C 프로그래밍
용어 설명 필요
float이 단정도 double이 배정도 인걸 따로 찾아보고 알게되었습니다. 대체적으로 좋은 수업이긴 하나 수강자가 어느 정도 이해하고 있다고 가정하고 수업하는 경우가 종종 있는 것 같습니다. 참고하시면 좋을 것 같습니다.
-
미해결홍정모의 따라하며 배우는 C언어
13.4 words[0]
while ((fscanf(stdin, "%30s", words) == 1) && (words[0] != '.')) fprintf(fp, "%s\n", words);에서 words[0] != '.'을 하는 이유가 궁금합니다.
-
해결됨CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기
ch .12 grid 설정 관련 질문 드립니다.
ch. 12에서 약 만 개의 데이터를 처리(add)하는 예제를 설명해주셨습니다.이때, core 1개만 사용 시 오류가 발생한다고 말씀하셨습니다. 이는 'SM이 1 block 단위로 처리하게 되는데, 1 block 당 최대 1024 thread를 할당 가능하기 때문이다.'라고 이해하면 될까요?기존 설명해주신 내용들을 떠올리면 여기서의 core는 SM의 의미일 것 같은데, 보통 core는 SM보단 SP에 가까운 것 같아 문의 드립니다.좋은 내용 강의해주셔서 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
11.7 함수를 구현해 봤습니다.
void swap(int* xp, int* yp) { const int tmp = *xp; *xp = *yp; *yp = tmp; }void printArray(int arr[], int size) { for (int i = 0; i < size; i++) printf("%d ", arr[i]); }void selectionSort(int arr[], int n) { int* arr_ptr = arr; for (int i = 0, min_index = 0; i < n - 1; i++) { for (int j = i; j < n; j++) { if (*(arr_ptr + min_index) > *(arr_ptr + j)) min_index = j; } swap(arr_ptr + i, arr_ptr + min_index); } }
-
해결됨홍정모의 따라하며 배우는 C언어
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
void fit_str(char* str, unsigned int loc) { str[loc] = '\0'; for (; loc < strlen(str) ; loc++) str[loc] = '\0'; }int my_strcmp(char* str1, char* str2) { char* str1_ptr = str1; char* str2_ptr = str2; if (strlen(str1_ptr) > strlen(str2_ptr)) return 1; if (strlen(str1_ptr) < strlen(str2_ptr)) return -1; if (strlen(str1_ptr) == strlen(str2_ptr)) { int i = 0; while (i < strlen(str1_ptr)) { if ((char)str1_ptr[i] - (char)str2_ptr[i] > 0) return -1; else if ((char)str1_ptr[i] - (char)str2_ptr[i] < 0) return 1; i++; } return 0; } }int my_strncmp(char* str1, char* str2, unsigned int loc) { int compare = 0; char st1[sizeof(str1)] = { 0, }; char st2[sizeof(str2)] = { 0, }; for (int i = 0; i < strlen(str1); i++) st1[i] = str1[i]; for (int i = 0; i < strlen(str2); i++) st2[i] = str2[i]; fit_str(st1, loc); fit_str(st2, loc); compare = my_strcmp(st1, st2); return compare; }
-
해결됨홍정모의 따라하며 배우는 C언어
11.6 my_strcat과 my_strncat을 구현해봤습니다.
void my_strcat(char* str1, char* str2) { char* st1 = str1; st1 = st1 + strlen(st1); for (int i = 0; *(str2 + i) != '\0'; i++) *(st1 + i) = str2[i]; } void my_strncat(char* str1, char* str2, unsigned int loc) { char* st1 = str1; st1 = st1 + strlen(st1); for (int i = 0; *(str2 + i) != '\0' && i < loc; i++) *(st1 + i) = str2[i]; }
-
해결됨홍정모의 따라하며 배우는 C언어
11.6 fit_str함수를 구현해 봤습니다.
void fit_str(char* str, unsigned int loc) { str[loc] = '\0'; for (; loc + 1 < strlen(str) + 1; loc++) str[loc] = '\0'; puts(str); }
-
해결됨홍정모의 따라하며 배우는 C언어
11.5 코드 구현
void custom_put(const char* str) { int i = 0; while (putchar(*(str + i)) != '\0') i++; } int custom_put2(const char* str) { int count = 0; while (putchar(*(str + count)) != '\0') { count++; } putchar('\n'); return count; }custom_put함수와 custom_put2함수를 구현해보았습니다.
-
미해결[쥬신게임아카데미 버거쌤] 완전 초보자를 위한 게임 C++
강사님, 강의 질문은 아닌데요ㅠ
쥬신아카데미 새로 올라온 C#강의 얼리버드로 구매하려다가 깜빡했는데ㅠ 얼리버드 하루만 연장해주실수 없으실까요? ㅠㅠ 부탁드립니당ㅠ🙏
-
해결됨홍정모의 따라하며 배우는 C언어
C언어 엔터
char greeting[50] = "Hello, and" " How are" " you" " today!";에서 " you"와 " today!" 사이에 엔터를 쳐서 사용해도 되나요?엔터쳐서 코드작성하는것에 대해서 설명해주시면 감사하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
포인터와 변수
포인터와 변수의 타입을 맞춰야하는 이유는 무엇입니까? 예를 들어 int a = 7; 이면 int* a_ptr = &a; 처럼 타입을 맞추는 이유는 무엇입니까?
-
해결됨홍정모의 따라하며 배우는 C언어
질문있습니다.
C언어는 위에서부터 아래로 코드, 줄이 실행됩니까?
-
해결됨홍정모의 따라하며 배우는 C언어
메모리 크기
포인터를 공부하면서 메모리 1칸의 크기가 햇갈려서 질문합니다.컴퓨터의 메모리 1칸의크기는 1byte이고 double형 변수를 만들면 double은 8byte이니까 8칸을 사용하나요?변수의 메모리 주소는 변수의 맨 첫부분 1칸 1byte의 주소를 뜻하나요?
-
해결됨홍정모의 따라하며 배우는 C언어
바이너리 파일을 읽을 때 관련해서 질문 드립니다.
안녕하세요. 13.5 강의를 듣고 실습 도중 궁금한 점이 있어서 질문 드립니다.수업처럼 sample.txt 파일을 하나 만들고 나서 fread()로 파일을 어떻게 읽는지 궁금해서 frwite()로 쓸 때와 다른 순서로 fread()를 해보았습니다. 그랬더니 순서를 맞췄을 때와 다른 결과가 나와서 관련되어 질문 드립니다. 우선 다음과 같이 코드를 작성했습니다.#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { // FILE write { FILE* fp = fopen("sample.txt", "wb"); int n = 100; double d = 10.0; float f = 3.14f; int* parr = (int*)malloc(sizeof(int)*n); if (!parr) exit(1); for (int i = 0; i < n; ++i) *(parr + i) = i * 2; fwrite(&n, sizeof(n), 1, fp); fwrite(&d, sizeof(d), 1, fp); fwrite(&f, sizeof(f), 1, fp); fwrite(&parr, sizeof(parr), 1, fp); } // FILE read { FILE* fp = fopen("sample.txt", "rb"); int n = 0; double d = 0.0; float f = 0.0f; size_t c0 = fread(&n, sizeof(n), 1, fp); printf("n: %d\tcount:%d\n", n, c0); size_t c2 = fread(&f, sizeof(f), 1, fp); printf("f: %f\tcount:%d\n", f, c2); size_t c1 = fread(&d, sizeof(d), 1, fp); printf("d: %f\tcount:%d\n", d, c1); int* parr = (int*)malloc(sizeof(int) * n); if(!parr) exit(1); size_t c3 = fread(&parr, sizeof(int), n, fp); printf("parr: %d\tcount:%d\n", *parr, c3); printf("fepf: %d\n", feof(fp)); free(parr); fclose(fp); } }size_t c1 과 size_t c2 의 코드상 순서를 위와 같이 했을 때는 출력 결과가 다음과 같았습니다.출력 결과 n: 100 count:1 f: 0.000000 count:1 d: 49.920021 count:1 parr: -842150451 count:100 feof: 1size_t c1 과 size_t c2 의 코드상 순서를 뒤집어서 fwrite()을 했을 때와 동일하게 한 경우 출력 결과가 다음과 같았습니다.출력 결과 n: 100 count:1 d: 10.000000 count:1 d: 3.140000 count:1 parr: -842150451 count:100 feof: 1여기서 질문입니다.파일을 fread()로 sample.txt 파일을 읽을 때마다 인자로 입력한 크기만큼 책 읽듯이 앞에서 부터 데이터를 읽어서 파일 쓰기 값과 다른 f와 d의 결과가 나온 것일까요? 바이너리 파일을 읽을 때 fwrite()한 데이터 순서 상관 없이 존재하면 읽을 수 있는 방법이 있을까요? 웬지 일반적인 방법으로는 안될 것 같은데 순서대로 읽을 수 밖에 없는 것일까요?또한 바이너리 파일 안에 어떠한 데이터 타입 포함되어 있는지 알 수 있는 방법이 있을까요?*parr의 경우 printf()로 출력하면 0이 출력 될 것이라 생각했는데 비정상적인 값이 나와서 놀랐습니다. 여러 생각을 해보았으나 원인이 잘 떠오르지 않아 왜 이런 값이 나오는지 여쭙습니다. 수업 주제를 넘어서는 질문인 것 같은데, 교수님께서 중간에 언급하신 '바이너리 파일의 구조를 모르면 해킹과 같은 방법으로 데이터를 읽어야 한다'고 하는게 상상을 해보면, 처음 부분부터 순차적으로 맞는 데이터를 찾을 때까지 (예를 들면) fread()를 반복해서 실행해 값을 확인하고 다음 데이터로 넘어가고를 반복하는 것일까요?