월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
NULL 관련 질문
char str1[3]="HEL" printf("%c, %c, %c", str1[0], str1[1], str1[2]); 했을때 출력 결과과, H,E,L 모두 잘 되는데 칸이 3개이고 HEL이 다 들어갔는데 NULL은 어디 간건가요? 애초에 [3]으로 하고 = "HEL" 하면 오류가 나야하는것이 아닌가요?
- 미해결홍정모의 따라하며 배우는 C언어
null
혹시 숫자의 배열에서는 NULL 이 붙지 않나요?
- 미해결홍정모의 따라하며 배우는 C언어
8.4 while(getchar() != 'n;) continue; 에서
안녕하세요 교수님 다른 분이 하신 해당강의 질문에서 while(getchar() != 'n') continue; 에서 getchar() 부분을 c로 바꾸면 오류가 생기는 이유를 알았습니다. 근데 while (getchar() != '\n') continue; 에서 getchar() 부분을 (c = getchar()) 로 바꿔주게 되면 정상적으로 작동하는데 입력을 예를 들어 yes 로 입력해주게 된다면 c 도 영원히 y의 아스키코드코드 값인 121이 저장되서 (c = getchar()) != '\n' 이 항상 참이되서 영원히 while 문을 돌아야 하는게 아닌가해서 질문 올려봅니다..
- 미해결홍정모의 따라하며 배우는 C언어
9.1강 질문입니다!
강의 19:20초 쯤에 선생님께서 print_multipe_chars 함수 안의 printf('\n'); 을 지우고 main 함수에서 print_multipe_chars 함수를 호출하는 코드 다음에 붙여서 사용하셨는데 왜 print_multipe_chars 함수 안에 printf('\n');을 넣으면 콘솔창에서 2줄이 띄어진 곳에서 다음 출력할 값이 출력되는지 이해가 잘 안돼요 ㅠㅠ 저는 print_multipe_chars 함수 안에 printf('\n');을 넣으면 for문을 수행하여 문자들을 다 출력하고 print('\n');의 동작이 실행되어 그 다음 출력이 한줄 아래에서 바로 실행되어야 할 것 같아 이해가 잘 안되네요... 혹시 어떤 원리에 의해서 이렇게 동작하는 것인가요??
- 미해결홍정모의 따라하며 배우는 C언어
8.3강 cmd창에서 출력 오류가 있어요
cmd창에서 I love apple. 출력해보는 실습을 진행하였는데 강의에서 해주신 방식과 똑같이 실습을 진행하였는데 exe 실행파일을 cmd창에서 입력하고 enter를 눌러서 출력을 기다리니 줄바꿈 후에 깜빡이기만 하고 출력이 되지 않고 a를 입력해보니 ascii 코드값(?)인지는 모르겠지만 97과 10이 출력이 됩니다. 어떻게 해야하나요??
- 미해결홍정모의 따라하며 배우는 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){ int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n");} void swap(int* xp, int* yp){ int temp = *xp; *xp = *yp; *yp = temp;} void selectionSort(int arr[], int n){ int i, j; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { while (arr[i] > arr[j]) swap(&arr[i], &arr[j]); } }}
- 미해결홍정모의 따라하며 배우는 C언어
complex 연산
Matlab 프로그램에서 * 연산자가 complex number의 곱하기 연산에도 공통적으로 사용되는 것 같이 C언어에서도 비슷하게 사용할 수 있는 방법이 있을까요? A와 B가 아래와 같이 정의된 complex type의 자료형 오브젝트인 일때 어떤 기호를 정의해서 (예 "*_c") .c 파일에 complex C = A *_c B; 를 작성하고 컴파일 후 실행하면 A와 B의 complex 곱을 수행하고 그 값을 리턴하게 해주는 +,-와 같은 새로운 연산자를 만드는 방법이 있을까요? 또는 "*" 사용범위를 확장하는 것이 가능한지 궁금합니다. matlab이나 python에서 어떻게 "*"사용을 complex type에서도 공통적으로 사용할 수 있게 구현했는지 궁금합니다. struct complex { double x; double y; }; typedef struct complex complex;
- 미해결홍정모의 따라하며 배우는 C언어
같은 for문의 조건에서 나누는 것이 더 효율적인 이유
약 7:25 쯤에서 for문은 나눠서 쓰는 게 더 좋다고 하셨는데 이유가 너무 궁금해서 여쭤봅니다! 같은 조건임에도 불구하고 왜 for문을 나눠서 쓰나요!?
- 미해결홍정모의 따라하며 배우는 C언어
강의 12:24
강의에서는 my_print_functions.c 파일에서 #include "my_print_functions.h" 하라했는데 my_print_functions.c 파일에 #include "my_print_functions.h" 가 없어도 정상 작동되는데 왜그런가요?
- 미해결홍정모의 따라하며 배우는 C언어
7.8 강질문입니다
강의에서 힌트를 보지않고 구현을하고 강의를 보앗더니 홍교수님이 작성하신 방법과 다르게 코드를 작성해서 구현을 햇는데요 아래와 같이 작성을 하엿는데 이게 어떠한경우에도 완벽한코드인지 감이 오질않습니다. 이렇게 작성햇을때 강의에서의 코드보다 단점이 있다면 어떤것일가요 #include <stdio.h> #define STOP '.' #define SPACE ' ' #define ENTER '\n' int main() { char ch; int chCount = 0,lineCount = 0, wordCount = 0; printf("Enter text : "); do{ ch = getchar(); if (ch != SPACE && ch!= STOP && ch!= ENTER) { chCount++; }else if (ch == SPACE || ch == ENTER || ch == STOP){ wordCount++; } if (ch == ENTER || ch == STOP){ lineCount++; } }while(ch != STOP); printf("Characters = %d, Words = %d, Lines = %d\n",chCount,wordCount,lineCount); }
- 미해결홍정모의 따라하며 배우는 C언어
10.18 질문입니다.
include <stdio.h>#define COLS 4 int sum_1d(int arr[], int n);int sum_2d(int arr[][COLS], int rows); int main(){ int a = 1; 3; //Literals are constants that aren't symbolic 3.14f; int b[2] = { 3,4 }; (int[2]) {3, 4};//compound literal //int c[2] = (int[2]){ 3,4 }; //error int arr1[2] = { 1,2 }; int arr2[2][COLS] = { {1,2,3,4},{5,6,7,8,} }; printf("%d\n", sum_1d(arr1, 2)); printf("%d\n", sum_2d(arr2, 2)); printf("\n"); printf("%d\n", sum_1d((int[2]) { 1, 2 }, 2)); printf("%d\n", sum_2d((int[2][COLS]){ {1,2,3,4},{5,6,7,8} }, 2)); printf("\n"); int* ptr1; int(*prt2)[COLS]; ptr1 = (int[2]){ 1,2 }; ptr2 = (int[2][COLS]){ {1,2,3,4},{5,6,7,8,} }; printf("%d\n", sum_1d(ptr1, 2)); printf("%d\n", sum_2d(ptr2, 2)); printf("\n"); return 0;} int sum_1d(int arr[],int n){ int total = 0; for (int i = 0; i < n; ++i) total += arr[i]; return total;} int sum2d(int arr[][COLS], int rows){ int total = 0; for (int r = 0; r < rows; r++) for (int c = 0; c < COLS; c++) total += arr[r][c]; return total;} 저는 다 그대로 입력한거같은데 도대체 왜안되는거죠?
- 미해결홍정모의 따라하며 배우는 C언어
4.10강에서 scanf * 무시 관련
scanf("%d <-이 사이-> %d", &a, &b); 위의 사이에 어떤 문자든(*) 집어넣으면 무시한다. 라고 이해했습니다. 그래서, 공백을 한칸이든 두칸이든 집어넣으면 a와 b의 인풋을 "a b"로 넣어도 a와 b의 주소에 그 인풋값을 %d의 형식으로 입력한다고 이해했습니다. 그런데, 이와 관련해서 혼자서 주욱 늘여서 써보니 제가 생각한 출력값과 다르게 나타났습니다. (vscode 에서 gcc로 컴파일, x64입니다.) --제가 작성한 코드-- #include <stdio.h> int main() { int a,b; scanf("%d,%d", &a, &b); printf("%d %d", a, b); return 0; } -------------------- 입력 : "1,,,,,,,,,,,5" 예상한 출력 : "1 5" 실제 출력 : "1 16" 입력 : "250,,,,,,,,10" 예상한 출력 : "250 10" 실제 출력 : "250 16" 무엇이 원인인가요?
- 미해결홍정모의 따라하며 배우는 C언어
printf 가 인자들을 해석하는 방법에 질문이 있습니다.
강의의 코드를 그대로 따라서 쳐보았는데요 484 와 844 인경우에는 n3의 값 1024가 그대로 출력되는것이 이해가 가지않습니다 심지어 강의에서도 저경우에 1024가 제대로 출력되지않앗던데 os가 달라서 그런걸까요?
- 미해결홍정모의 따라하며 배우는 C언어
수업 중 예제와 관련해서
안녕하세요 수업 중 extra 예제를 따라 풀어봤는데 수업중에선 실행시키면 4 5 가 나왔습니다. 저는 8 5 가 나옵니다. 무엇이 잘못된 건가요..?
- 미해결홍정모의 따라하며 배우는 C언어
아래 질문에 대해 추가 질문 드립니다.
아래의 배열의 크기와 fprintf에 대해 질문 에 대한 질문글에서 while의 구조에 대해 생각해보시라고 했는데 도저히 잘 모르겠습니다.. #include <stdio.h> int main(){ char words[3] = {0}; while ((scanf("%s", words) == 1) && (words[0] != '.')) { printf("%s\n", words); printf("%c\n", words[0]); printf("%c\n", words[1]); printf("%c\n", words[2]); printf("%c\n", words[3]); printf("%c\n", words[4]); printf("%c\n", words[5]); printf("%c\n", words[6]); } /*scanf("%s", words); printf("%s\n", words);*/ return 0;} 제가 좀 정확히 확인하고 싶어서 만든 코드인데 디버거 찍어봐도 잘 모르겠습니다. 경고줄만 그이고 입력한 대로 잘 나오더라구요. 주석코드는 당연히 에러가 떴고요. 항상 이런 기본 질문만 해서 죄송하고 일일히 답변해주시느라 수고 많으십니다...
- 미해결홍정모의 따라하며 배우는 C언어
6:30에 나오는 &end가 잘 이해가지 않습니다.
아래에 비슷한 질문이 있는데 봐도 이해가 가질 않아 질문 남깁니다. end는 이미 포인터 변수로 선언되었고 end안에 H주소가 들어갈텐데 왜 &를 붙인건지 모르겠습니다. 그냥 end를 쓰고 내부 함수에서 이중 포인터가 아닌 일반 포인터로 표기했으면 안됐던건가요? 아니면 문법으로 봐야할까요??
- 미해결홍정모의 따라하며 배우는 C언어
프로젝트 안에 여러개의 소스파일
안녕하세요! 강의 따라하다가 질문이 생겨 글 남깁니다! 다름이 아니라 강의에서는 같은 파일을 사용하면서 코드를 계속 지우면서 하셨는데 저는 공부하려고 남겨두고 같은 프로젝트에 소스파일을 추가하였습니다! 그리고 이것을 실행하려고 하니까 main이 이미 있다면서 안되더라구요. 이러한 경우에는 그냥 새 프로젝트를 만들어서 실행하는 것이 가장 좋은 건가요?
- 미해결홍정모의 따라하며 배우는 C언어
24:20 질문있습니다. + 맨 마지막 예제 질문있습니다.
런타임 에러 뜨는 이유가 문자열 제일 마지막에 붙는 \n때문에 그런건가요? + 마지막 예제에서 if(st[i] == '\n') st[i] = '\0'; 의 존재의미가 무엇인가요? 만약 1234567890abc을 입력한다면 1234567890\0이 fgets로 갈 것이고 이 때 \0때문에 else문으로 가서 버퍼가 비워질텐데 애초에 fgets에 \n이 저장될 수 없지 않나요?
- 미해결홍정모의 따라하며 배우는 C언어
9:16 질문 있습니다.
제가 잘 이해한건지 모르겠는데 이차원 배열을 구조적으로 보면 일렬로 나열되어 있으니까 yourthings[0][i]로 나타낼 수는 있겠지만 권장하지는 않는다는 내용인건가요? mythings도 마찬가지구요.
- 미해결홍정모의 따라하며 배우는 C언어
맥 os 에서의 vscode
안녕하십니까 교수님 다름이 아니라 맥북으로 비주얼 스튜디오 코드를 이용해 c언어를 익히고 싶은데 초기설정에서 계속 헤매고 있습니다. 혹시 관련 자료가 있다면 알려주시면 감사할것 같습니다