묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
getchar와 scanf의 차이
char ch = 0;scanf_s("%c", &ch, 1);printf("%d", ch); char ch = 0;ch = getchar();printf("%d", ch); 여기서 scanf_s와 getchar의 차이가 뭔가요?
-
미해결혼자 공부하는 C 언어 저자에게 배우는 C 언어의 모든 것
맥으로수강
맥으로수강하기 괜찮을까요? 에어 m1입니다
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
맥으로수강
맥으로 수강하기 괜찮을까요? 에어 m1입니다
-
해결됨독하게 되새기는 C 프로그래밍
비선형 자료구조
혹시 비선형 자료구조 강의를 만드실 생각이 있으신가요? 있으면 듣고 싶네요 ㅎㅎ
-
해결됨Windows 시스템 프로그래밍 - 기본
시스템 프로그래밍에서 c와 c++
시스템 프로그램 함수 매개변수에 NULL을 사용할때 c식으로 코딩하려면 NULL이고 c++식으로 코딩하면 nullptr로 써두는게 협업에서 도움이 되나요?시스템 프로그래밍이나 소켓프로그래밍에서 scanf와 printf문,char배열을 쓰는것보다 cout,cin,endl,string을 쓰는게 성능 차이가 많이 나나요?
-
해결됨독하게 시작하는 C 프로그래밍
memcpy 사용 후 free 함수 사용여부
memcpy 의 내부동작을 설명하실때 동적메모리할당 구문이 있었는대 이 부분은 free 로 안닫아줘도 괜찮은건가요??
-
해결됨홍정모의 따라하며 배우는 C언어
구현과 삼항연산자의 대한 질문.
#include <stdio.h> void swap(int* xp, int* yp); void printArray(int arr[], int size); void selectionSort(int arr[], int n); int main() { int arr[] = { 64, 25, 12, 22, 11,}; int n = sizeof(arr) / sizeof(arr[0]); selectionSort(arr, n); printArray(arr, n); return 0; } void printArray(int arr[], int size) { for (int i = 0; i < size; i++) printf("%d\n", arr[i]); } void swap(int* xp, int* yp) { int tmp = *xp; *xp = *yp; *yp = tmp; } void selectionSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { int* min_idx = &arr[i]; for (int j = i + 1; j < n; j++) { min_idx = (*min_idx < arr[j]) ? min_idx : &arr[j]; } swap( min_idx, &arr[i]); } }선생님의 빈 칸 맞추기를 공개하시기 전에 문제를 생각하여 풀어봤습니다. 여러 숫자를 집어넣어봐도 잘되는 것 같습니다. 이 코드가 문제없이 잘 작동하는 코드일까요?그리고 여기서 삼항연산자를 썼는데 삼항연산자가 자주 쓰이는 연산자 인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
함수와 재귀함수(1)이 가지는 반환값
#include <stdio.h>int start;int loop(int n);long recursive_factorial(int);int main(){ int b = recursive_factorial(5); printf("your final destination is % d", b); return 0;}long recursive_factorial(int n){ if (n != 0) { // recursion 함수 : it is called "재귀호출" and tail recurision in englishprintf("%d\n", n); return n * recursive_factorial(n - 1); } printf("hki"); // 이 줄 없을때는 그냥 120 출력된다. 그러나 이 줄 추가했더니 뭔가 다르다. //출력스트링의 길이가 반환값인가? hi 일때 최종값 240, hki일때 최종값 360이네(120씩 증가한다.), 근데 한글은 길이 한 번 늘때마다 240씩 증가하네? } 코드입니다.팩토리얼 예제를 얼떨결에 직접 풀었지만, 궁금증이 가시지 않아 질문 올립니다.첫 번째, recursive_factorial(2)는 2 * 동일한 함수의 (1)을 반환값으로 갖습니다. 이때 함수(1)의 반환값은 어찌 되나요?두 번째, 주석으로 남겨둔 내용의 이유가 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
2분 5초경 5분 37초경 질문있습니다.
5분 37초 ch = fgetc(fp);로 버퍼에 문자들을 채우고 거기서 1글자를 가져오고 for (int i = 0; i < sizeof(buffer); ++i) printf("%c", buffer[i]);printf("\n");로 버퍼에 있는 내용들을 전부 출력해보면 fgetc() 함수로 가져온 문자를 포함해모든 문자가 출력되는 걸 볼 수 있는데 제가 알기로는 버퍼에 있는 내용을 복사를 하면 복사를 한 내용이 버퍼에서는지워지는 걸로 알고 있는데 그렇다면 버퍼에서 먼저 fgetc() 함수로 가져온 문자가지워져서 버퍼의 내용들을 출력할 때 그 문자는 제외되어야 하는 것 아닌가요?제가 버퍼에 대해 잘못 이해하고 있는 건가요?
-
해결됨홍정모의 따라하며 배우는 C언어
5분 44초경 질문있습니다.
fsetpos() 함수가 어떻게 작동하는지 이해가 잘 안돼서 fpos_t pt;pt = 10;fsetpos(fp, &pt);ch = fgetc(fp);printf("%d %c\n", ch, ch);fgetpos(fp, &pt);printf("%lld\n", pt); 위의 코드 다음에 fsetpos(fp, &pt);ch = fgetc(fp);printf("%d %c\n", ch, ch);fgetpos(fp, &pt);printf("%lld\n", pt); 이런 식으로 코드의 일부분을 추가로 복사 붙여넣기하여 실행하면 어떻게 될지 궁금해서 실행을 해봤더니이런 결과가 나왔습니다.실행하기 전에 결과를 예상해봤는데똑같이 K가 출력되거나 K의 다음칸에서 10칸만큼 더 이동을 해서 V가 출력될 줄 알았습니다그런데 제 예상과는 완전 다른 결과가 나와버렸네요아마 읽고나면 한 칸 이동을 하는 특성 때문에 그렇게 되는 거 같은데그게 어떻게 작동하길레 저런 결과가 나오는지 궁금합니다. 항상 좋은 답변 정말 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
8분 8초경 질문
8분 8초에서feof() 함수는 EOF를 만났는가 물어봐요라고 하시고 8분 16초에서근데 지금 깔끔하게 저장된 개수만큼 왔기 때문에 EOF를 만나지 않은 상태에요라고 하시는데 EOF를 만났는가 물어본다는 말에서 어떤게 EOF를 만났는가 물어본다는 것인지저장된 개수 만큼 왔기 때문에에서 뭐가 저장된 개수 만큼 왔다는 것인지 잘 모르겠습니다. 지금까지의 강의 내용을 이해해보면전자와 후자는 같은 걸 말하는 것 같고뉘앙스만 보면 파일을 얼마나 읽어들였는지에 대한 진행도? 같은 느낌이 드는데정확하게 이게 뭔지 잘 모르겠습니다 항상 좋은 답변 정말 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
3:00쯤에 selctionSort함수를 이런식으로 작성해도 괜찮나요??
void selectionSort(char* arr[], int n){ for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (strcmp(arr[j], arr[i]) < 0) swap(&arr[i], &arr[j]); } }}
-
해결됨독하게 시작하는 C 프로그래밍
qsort 함수에 관한 질문입니다.
stdlib에서 제공하는 qsort 함수qsort(void base, size_t width, int(*compare)(const void* key, const void* element))에서 compare부분이 비교함수를 가리키는 함수 포인터라고 알고있습니다.그렇다면,qsort(aList, 5, sizeof(int), *myCompare); 같이 넣지 않고qsort(aList, 5, sizeof(int), myCompare); 처럼 넣는 이유가 뭔가요?
-
해결됨독하게 시작하는 C 프로그래밍
함수 포인터 강의에서 질문이 있습니다.
int(*pfGetMax)(int,int,int) = GetMax; 를 통해함수 포인터 선언 정의를 동시에 하고printf("MAX: %d\n", pfGetMax(1,3,2)); 를 하셨는데함수 포인터를 사용하여 GetMax 함수를 호출하는 과정에서pfGetMax(1,3,2)를 사용하셨는데 이 표현이 이해가 가지 않았습니다.포인터의 간접지정을 통해서 값을 가져와야 한다고 생각했는데(*pfGetMax)(1,3,2) 처럼 해야하는 것이 아닌가요?
-
해결됨독하게 시작하는 C 프로그래밍
[필수 실습 문제] '*' 출력 놀이 응용
if문을 쓰는 것과 아래 코드처럼 for문만 쓰는 것 중에 어느 코드가 더 효율적인가요?for (int i = 1; i <= 5; i++) { for (int j = 0; j < 5 - i; j++) { printf(" "); } for (int j = 0; j < i; j++) { printf("* "); } puts("");}
-
미해결홍정모의 따라하며 배우는 C언어
6-15강 첫번째 예제 질문
사용자로부터 첫번째 문자와 마지막 문자, 그리고 몇번 반복할건지를 직접 입력받는 경우를 가정하여 다음과 같이 코딩해봤습니다.문자를 입력받고, 정수로 형변환한 후, 정수를 한개씩 늘려가다가 사용자가 지정한 마지막 문자를 만나면 멈추고 다시 문자로 출력되도록 하면 되겠다 싶어 작성한 코드입니다.첫번째 scanf까지는 정상적으로 작동하는데 두번째 scanf값을 입력하면 실행창이 꺼져버립니다. 어느 부분에서 오류가 발생한건지 알 수 있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
6-1강 첫번째 예제 질문
코드 처음에 num과 sum 변수를 0으로 초기화 해줘야만 코드만 실행되는 이유는 무엇인가요? 0으로 초기화하지 않고 실행했을때 오류가 나는 이유도 궁금합니다
-
해결됨독하게 시작하는 C 프로그래밍
[필수 실습 문제] 버스 요금 계산
안녕하세요 강사님 [필수 실습 문제] 버스 요금 계산 관련 질문 있습니다.저는 나이가 20살 미만이면 기본 버스 요금 1000원의 75% 적용한다는 구문을printf 함수 안에 input*0.75 이렇게 적었는데요이렇게 적으면 최종 요금이 0이 나오더라구요이렇게 되는 이유가 최종 요금을 나타내는 형식문자가 %d인데 *0.75 를 곱해서 일어난 것 같은데전체적으로 보면 input 0.75 = 1000 * 0.75 =750 의 정수형식이라서 상관없을 거 같은데 형식 문자가 %d 정수형이면 그 값을 나타내는 변수에도 정수만 들어가야하나요?
-
미해결홍정모의 따라하며 배우는 C언어
VScode 컴파일러 경로 설정
컴파일러 경로에 C:\msys64\mingw64\bin\g++.exe가 나타나지 않아서 C:\msys64\ucrt\bin\g++.exe로 설정을 했고 환경변수에는 C:\msys64\mingw64\bin으로 입력을 해놓았는데 나중에 문제가 생기지 않을까요?테스트코드 실행했을 때는 문제없이 컴파일되긴 했는데.. mingw로 맞추고 싶은데 ucrt만 뜨는 이유가 뭔가요?
-
미해결홍정모의 따라하며 배우는 C언어
14.11강 9:51 부분 질문
안녕하세요. 강의에서 64번째 줄 코드 *pf2 = *pf1;을 어떻게 해석해야 하는지 잘 모르겠습니다.컴파일러는 런타임에 일어나는 일을 모르기 때문에 동적 할당으로 받은 메모리는 복사하지 못한다고 이해하면 될까요?memcpy를 이용한다면 다음과 같이 작성하면 되나요? memcpy(pf2, pf, 40);pf2 = pf;로 변경하여 실행하면 런타임 에러가 나는데, 그 이유를 2번처럼 이해하면 될까요? 감사합니다.