월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
count함수에서 버퍼비우기 필요한 이유?
안녕하세요. get_integer()에서 정수값을 리턴받고 그 값이 count()에서 num값으로 쓰이는데 count()에서 그 어떤값도 getchar()을 통해 입력받지않죠. while (getchar() != '\n') continue; 이 문장들이 count()에서 왜 필요한지 모르겠습니다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> char get_choice(void); char get_first_char(void); int get_integer(void); void count(void); int main() { int user_choice; //사용자의 입력 while ((user_choice = get_choice()) != 'q') { switch (user_choice) { case 'a': printf("Avengers assemble!\n"); break; case 'b': printf("\a"); break; case 'c': count(); break; default: printf("Error with %d.\n", user_choice); exit(1); break; } } return 0; } char get_choice(void) { int user_input; printf("Enter the letter of your choice:\n"); printf("a. avengers b. beep\n"); printf("c. count q. quit\n"); user_input = get_first_char(); while ((user_input < 'a' || user_input>'c') && user_input != 'q') // 입력 유효성 검증 { printf("Please try again.\n"); user_input = get_first_char(); } return user_input; } char get_first_char(void) // 첫 번째 글자만 받는 함수 { int ch; ch = getchar(); while (getchar() != '\n') continue; return ch; } int get_integer(void) { int input; char c; while (scanf("%d", &input) != 1) { while ((c = getchar()) != '\n') putchar(c); printf("is not an integer.\nPlease try again."); } return input; } void count(void) { int i, num; printf("Enter an integer:\n"); num = get_integer(); for (i = 1; i <= num; i++) printf("%d\n", i); while (getchar() != '\n') continue; }
- 해결됨홍정모의 따라하며 배우는 C언어
형식지정자 크기와 자료형에 대한 질문입니다.
#include <stdio.h> #include <limits.h> #include <stdlib.h> int main() { char c = 65; short s = 200; unsigned int ui = 3000000000U; long l = 65537L; long long ll = 12345678908642LL; printf("char = %hhd, %d, %c, %ld, %lld\n", c, c, c, c, c); // 왜 %lld 만 수가 다르게 나오나요? 분명 더 큰 형식지정자인데 궁금합니다. printf("short = %hhd, %hd, %d, %ld, %lld\n", s, s, s, s, s); printf("unsigned int = %u, %d\n",ui,ui); printf("long = %ld, %hd, %lld\n", l, l, l); printf("long long = %lld, %ld\n",ll,ll); return 0; } 질문: 더 큰 형식지정자인 %lld 를 사용해서 char 자료형을 출력했는데 다른 형식지정자들은 65로 같게 나오는데 %lld 만 다르게 출력됩니다. 무슨 이유가 있나요?
- 해결됨홍정모의 따라하며 배우는 C언어
while (scanf(
안녕하세요. 스트링 입력을 받는 아래 코드에서 while (scanf("%[^\n]%*c", input) != 1) printf("Please try again.\n>> "); 아무것도 입력하지 않고 엔터키를 누르면 Please try again>> 이 구문이 무한 반복으로 나타납니다. 왜 이런 걸까요?
- 해결됨홍정모의 따라하며 배우는 C언어
malloc() 함수 식별자 오류
강의 10:15에 나오는 코드대로, #include <stdio.h> #include <string.h> int main() { char *str5 = (char*)malloc(sizeof(char) * 100); str5[0] = 'H'; str5[1] = 'e'; str5[2] = 'l'; str5[3] = 'l'; str5[4] = 'o'; str5[0] = '\0'; // 맨마지막 null character 까지! printf("%zu %zu\n", sizeof(str5), strlen(str5)); return 0; } 를 작성하여 입력했는데 빌드중에 "식별자 malloc가 정의되어 있지 않습니다." 라고 뜹니다.. 라이브러리 코드에 나와있는대로 다 include 했는데도 저리 뜨네요.. 도대체 뭐가 문제일까요?
- 미해결홍정모의 따라하며 배우는 C언어
go to definition 에러
안녕하세요. stdint 혹은 inttypes를 선택하고 go to definition을 클릭하면 오류가 발생해요. A definition for the symbol '' could not be located. 라고 경고창이 뜹니다. int32_t 혹은 PRId32 등으로 go to definition을 누르면 헤더 내부를 볼 수 있긴합니다. 왜 이런 에러가 발생하는지 궁금합니다. 비주얼 스튜디오 2017에서 실행시켰습니다. 덧붙이면, 비주얼 스튜디오 2019도 설치했는데요, 2019에서는 에러가 발생하지 않네요. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
mingw-w64 설치
mingw-w64 설치가 중간에 자꾸 중단됩니다 ㅠㅠ 어떻게 해야하나요?
- 해결됨홍정모의 따라하며 배우는 C언어
10.11 배열 매개변수와 const 질문이요!!
4:32분경 36행 부분은 왜 출력이 안된 것 인가요?? 35행에서 101 102 103 104 105 출력후에 arr 값이 변해있으니 36행에서 다시 출력시 101 102 103 104 105가 한번더 출력되어야 하는 것 아닌가요?
- 미해결홍정모의 따라하며 배우는 C언어
if문의 !line_flag에 대해 질문 드립니다.
bool line_flag = false; 로 line_flag의 초기값이 false입니다. 4분 18초 경 if(!isspace(c) && !line_flag)에서 "line_flag가 false라면, 앞에 !이 붙었기 때문에 요거 자체가 true가 아니라면" 라고 말씀해주시는데 여기서 헷갈립니다 ㅠ line_flag가 false인데 !line_flag는 true여야 되지 않나요? 애초에 논리연산자 && 면 둘 다 true여야 if문의 body가 실행될텐데 !line_flag가 true여야 하는게 아닌지 궁금합니다 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
디버깅에 대하여
강의를 따라 해보는데 강의처럼 구현이 되지 않습니다. 어떻게 해야 될까요.
- 미해결홍정모의 따라하며 배우는 C언어
소수끼리의 몫과 나머지
예를들어 5.4 나누기 1.05의 몫과 나머지를 구하는 연산자는 뒤에 나오나요? (while 문으로 계속해서 빼는 방식으로 프로그램을 만들 수는 있어보이네요)
- 해결됨홍정모의 따라하며 배우는 C언어
메인함수 질문입니다.
이런식으로 한 프로젝트 안에 두 개의 소스파일을 작성하고 각 소스파일 내부에서 각각 메인함수를 작성했을 때, 소스파일을 컴파일하려 하면 이런 에러가 뜹니다. 혹시 이런 경우에는 다른 소스파일에 있는 메인함수 이름을 바꿔서 실행시키는 방법 말고는 해결 방법이 없을까요?
- 해결됨홍정모의 따라하며 배우는 C언어
사소한 부분이지만 눈에 보여서 써봅니다.
5.11 자료형 변환 16:30 에서 1106 숫자를 2진수로 바꾸어서 리터럴 상수로 표기한 부분이 0100 0101 0010 이죠?
- 해결됨홍정모의 따라하며 배우는 C언어
(강의 15분 30초) static const int cr = col*row ;
강의 15분 30초에 static const int cr = col*row; 이 부분을 해보니 col*row에 빨간 밑줄이 나오며 expression must have a constant value 라고 합니다.
- 미해결홍정모의 따라하며 배우는 C언어
질문입니다
1분 40초쯤에 while(getchar()!='\n'); continue; 를 안써줘서 \n 도 버퍼에 들어와서 count가 두번됐다고 하셨는데, 디버깅을 해보니 예를들어 처음 잘못된 코드에 y를 입력하고 엔터를 누르면, count++를 만나 count 가 하나 증가하고 다시 while문이 반복되어 printf가 실행되고 또다시 if문을 만나는데 그 안에 getchar가 있으니까 또다시 입력을 받아야 하지 않나요? 왜 getchar 를 무시하고 바로 count++로 가서 바로 2가 또 출력되는지 잘 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
변환지정자 수식어 질문
1. .을 기준으로 .뒤는 precision이라는 것은 알겠는데 %0.8f나 %0i같이 .앞의 0은 flag인지 width인지 어떻게 구별하나요? 2. width와 .precision은 각각 자리수를 지정, 정밀도 보장하는데 정수일 때 둘의 차이를 모르겠습니다. 예제를 보면 실수일 때는 둘의 기능이 명확히 구분이되는데 정수일 때는 둘 다 자리수를 지정하는 기능으로 보여 구분이 잘 안됩니다. 3. 앞강의에서 배웠던 %g를 사용했을때 백만자리가 넘어가면 자동으로 과학적 표기법 형태로 바뀌던데 원래 그런가요? 부동 소수점 수에 사용이 되고 값에 따라서 %e나 %f중 짧은 표현에 사용하고 지수가 –4보다 작거나 정밀도보다 크거나 같을 경우에는 %e 사용 이라고 말씀하신 교수님의 설명만으로는 이해가 잘 가지않아서 그렇습니다.
- 미해결홍정모의 따라하며 배우는 C언어
4분 30초 0.01을 나타내려면 어떻게 해야하나요?
수준 낮은 질문 죄송합니다.
- 미해결홍정모의 따라하며 배우는 C언어
미래기술연습문제패키지
미래기술연습문제패키지는 현재 제공이 중단되었나요?? 좋은강의 너무 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
변수설정은 2진수로 했는데 왜 출력은 10진수로 되나요? 당연한건가요
unsigned int i = 0b111111111111111111111111111111111 printf("%u\n", i); 에서, 변수설정은 2진수로 했는데 왜 출력은 10진수로 되나요? 당연한건가요
- 해결됨홍정모의 따라하며 배우는 C언어
for 문에서 변수 선언
안녕하세요. 홍정모 교수님. 해당 강의에서 궁금한 점이 생겨서 질문드리고자 합니다. for (int i = 0; i < SIZE; ++i) my_arr[i] = i; for (int i = 0; i < SIZE; ++i) printf("%d ", my_arr[i]); 해당 강의에서 위의 코드에서와 같이 두 개의 for loop에서 각각 변수 i를 선언하셨는데, C 문법상 변수를 중복해서 선언하면 오류가 뜨는 걸로 알고 있는데 위와 같은 경우에는 왜 오류가 뜨지 않는지 궁금해 질문드립니다. 답변주시면 감사드리겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
signed int일 때 INT_MAX+1을 하면 왜 제대로 작동이 되는 건가요?
#include <stdio.h> #include <limits.h> #include <stdlib.h> int main() { signed int u_max = INT_MAX ; //i to binary representation char buffer[33]; _itoa(u_max, buffer, 2); //print decimal and binary printf("decimal: %u\n", u_max); printf("binary: %s\n", buffer); return 0; } //INT_MAX //decimal: 2147483647 //binary : 1111111111111111111111111111111 //INT_MAX +1 //decimal: 2147483648 //binary : 10000000000000000000000000000000 signed int max 값에 +1을 하면 output 창에 오버플로우라고 경고가 뜨긴 하지만 실행했을 때 정말 +1한 값이 나옵니다. 왜 unsigned int와 다른 방식의 결과가 나오는지 궁금합니다. 감사합니다:)