월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
풀이 간 질문이 있습니다
isspace 함수를 사용하지 않고 풀려고 시도해보았는데#단 공백과 개행만 입력된다는 가정하에 풀었습니다 1. ch != ' '&&ch!='\n' 이 조건문에서 공백과 개행문자가 입력 되었을 경우 False가 되어야 하는데 True가 나오는지 모든 공백과 개행문자들 또한 계산하여 chara변수가 ++됩니다.마찬가지로 아래 worflag, liflag를 제어 해주는데 있어 ch 값이 공백일 경우 worflag=0, 개행문자일 경우 liflag=0으로 대입해주었는데 생각 한 대로 구현이 잘 되지 않습니다 제 풀이에 어떤 오류가 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
자료형 관련 질문
안녕하세요. 자료형 관련하여 질문드립니다. 예를 들어, int a = 8; 이라고 한다면, int는 4바이트이니까, 메모리에 4바이트만큼 차지하게 됩니다. 4바이트는 32비트이니까 32자리인데, 숫자8을 2진수로 바꾸면 1000으로 4자리입니다. 제가 궁금한 점은 그러면 메모리에 할당된 4바이트 공간에는 32자리의 2진수가 들어가야 하니까, 32자리 중 앞 28자리는 0으로 채워지고, 뒤 4자리가 1000으로 채워지는 것인가요? (4.10강) scanf()함수 예제에서 이런 코드를 작성하였습니다. scanf로 받는 %hhd는 문자의 숫자형식(아스키코드 등)을 받는 것이고, printf는 char타입보다 메모리가 큰 int로 받으니까 에러가 발생하지 않는다는 것은 이해하였습니다.%hhd는 unsigned이니까 0~255까지의 숫자가 가능한데, 콘솔창에 255를 넣으면 값이 -1이 나오고, 256은 0, 257은 1... 이런 식으로 출력이 됩니다. 왜 이렇게 되는 것인지 이해가 잘 안 되어서 질문 남깁니다.감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
11.6 다양한 문자열 함수들 - my_strcat 만들기 질문
이렇게 함수를 만들었는데 출력에는 S만 붙어서 출력이 됩니다. 이유를 잘 모르겠습니다..
- 미해결홍정모의 따라하며 배우는 C언어
4.8강) 예제 오버플로우
안녕하세요.4.8강 변환 지정자의 수식어들 예제 문제에서 궁금한 점이 있어서 질문드립니다.해당 코드를 실행하면, %hhd는 최댓값이 255 혹은 127 이기 때문에 오버플로우가 발생한다는 것까지는 이해하였습니다. 근데 콘솔창에 출력값으로 해당 코드 실행 결과가 1로 출력이 되는데, 0으로 출력되어야 하는 것이 아닌가요? 1111 1111 에 추가적으로 값이 더해지면서 자릿수를 넘어간 부분을 제외하고 0000 0000이 되기 떄문에 0이 되어야 한다고 생각했습니다. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
프로그램 실행 과정
안녕하세요. 프로그램 실행 과정과 관련하여 질문 있습니다.프로그램 실행 과정을 제대로 이해하였는지 확인부탁드립니다! 1) 사용자가 프로그램 실행 (마우스 클릭 등)2) 운영체제가 사용자가 프로그램 실행을 요청했다는 것을 인식3) 운영체제가 CPU 내 제어장치한테 프로그램 실행 해달라고 요청하고, 프로그램 카운터에 는 실행할 프로그램의 첫번째 주소가 저장됨4) 제어장치는 제어버스를 통해서 메모리에게 '자료를 읽어라'라는 요청을 하고, 프로그램 카운터에서 주소 레지스터로 넘어온 첫번째 주소를 주소 버스를 통해서 메모리에게 알려 줌5) 메모리는 주소버스와 제어버스를 통해서 받은 정보를 바탕으로 저장된 내용을 제어장치 한테 보내줌. 위 과정이 제대로 되었다면 궁금한 점이 있는데, 운영체제는 어떻게 프로그램의 첫 주소를 알고 있는 것인지 궁금합니다. 감사합니다 :)
- 미해결홍정모의 따라하며 배우는 C언어
1번문제 flag의 값이 1이 나오는 이유?
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define NLEN 30 struct name_count { char first[NLEN]; char last[NLEN]; int num; }; void receive_input(struct name_count*); void count_characters(struct name_count*); void show_result(const struct name_count*); char* s_gets(char* st, int n); int main() { struct name_count user_name; receive_input(&user_name); count_characters(&user_name); show_result(&user_name); return 0; } char* s_gets(char* st, int n) { char* ret_val; char* find; ret_val = fgets(st, n, stdin); // vs. scanf() if (ret_val) { find = strchr(st, '\n'); // look for newline if (find) // if the address is not NULL *find = '\0'; // place a null character there else while (getchar() != '\n') continue; // dispose of rest of line } return ret_val; } void receive_input(struct name_count* ptr_nc) { int flag; printf("Input your first name:\n>> "); //s_gets(ptr_nc->first, NLEN); flag = scanf("%[^\n]%*c", ptr_nc->first); // ^ : cap operator:not을 의미합니다. printf("%d \n", flag); if (flag != 1) printf("Wrong input"); printf("Input your last name:\n>> "); //s_gets(ptr_nc->last, NLEN); flag = scanf("%[^\n]%*c", ptr_nc->last); if (flag != 1) printf("Wrong input"); } void count_characters(struct name_count* ptr_nc) { ptr_nc->num = strlen(ptr_nc->first) + strlen(ptr_nc->last); //ptr_nc->num = (int)strlen(ptr_nc->first) + (int)strlen(ptr_nc->last); // int castings remove warnings } void show_result(const struct name_count* ptr_nc) { printf("Hi, %s %s. Your name has %d characters.\n", ptr_nc->first, ptr_nc->last, ptr_nc->num); } 위 코드에서 scanf 의 return이 flag인데 정상적으로 입력했을 때 1이 나오는 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
런타임에러가 뜨지않습니다.
#define CRTSECURE_NO_WARNINGS#include <stdio.h>int main(){ int* safer_ptr1; int a = 123; if (a % 2 == 0) safer_ptr1 = &a; printf("%p", &safer_ptr1);} safer_ptr1에 대한 런타임 오류없이 리턴값으로 0이 출력되는데 제가 이상한걸까요?
- 미해결홍정모의 따라하며 배우는 C언어
수강시 참고 할 만한 책 질문
안녕하세요 교수님 최근에 수강을 시작한 초보입니다. 강의를 들으면서 따라하고 있는데 복습할떄 책을 참고 하고싶은데 C Primer Plus 이 책을 프로그래밍을 처음 하는 초보자가 봐도 괞찮을까요 아니면 다른 추천하는 책이 있으시다면 추천해주시면 감사하겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
'_CRT_SECURE_NO_WARNINGS': macro redefinition 관련 질문입니다
#define CRTSECURE_NO_WARNINGS#include <stdio.h>#include<float.h>int main(){ char fruit_name[40]; scanf("%s", fruit_name); printf("%s", fruit_name); return 0;}이러한 간단한 코드를 빌드 했을때 '_CRT_SECURE_NO_WARNINGS': macro redefinition 라는 경고가 뜨는데 어떤 문제가 있는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
아스키 코드 관련 질문입니다
backspace 문자형을 아스키코드를 활용하여 출력함에 있어서 강의에서 \b를 사용하셔서 다른 형으로 출력 해보았습니다.1. printf("$______\x08\x08\x08\x08\x08\x08");2. printf("$______\010\010\010\010\010\010");3. printf("$______\8\8\8\8\8\8"); scanf("%d", &a);16진수, 8진수로 표현한 backspace는 잘 출력이 되었는데 10진수로 표현한 backspace는 그냥 8만 출력되는데 \8로 활용하면 안되는건지 그리고 안되는거면 왜 에러가 뜨지 않고 8이 출력되었는지도 궁금합니다
- 미해결홍정모의 따라하며 배우는 C언어
3.6강 오버플로우
안녕하세요. 강의 시간에 unsigned int에 대한 오버플로우를 코딩 해봐서 혼자서, signed에 대해 해보았습니다. 근데 2진수 결과값으로 1000~이 나오는데, 최대값에 +1을 하였으니 0000~이 나와야하는 것 아닌가요? 어느 부분을 잘못했는지 궁금합니다!
- 미해결홍정모의 따라하며 배우는 C언어
fscanf함수 질문입니다.
8:55초쯤에struct book* read_books(const char* filename, int* n_ptr){...flag = scanf(fr, "%d%*c", n_ptr);...}내가 읽은 파일에 저장된 정수를 n_ptr에 저장하는 부분에서 정수를 저장하기 위해선 n_ptr이라고 적어야 하지 않을까 생각해서 질문해봅니다. 그렇게 생각한 이유는 n_ptr이 정수의 주소를 담는 포인터 변수이기 때문입니다.
- 미해결홍정모의 따라하며 배우는 C언어
visual studio 2022, mac에서는 c/c++ 지원이 안되나요?
제목과 동일합니다.visual studio 2022에서 맥은 c/c++지원이 안 된다는데 사실인가요? 그럼 visual studio code로 실습해도 괜찮을지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
저는 매번 교수님이 작성하신 코드와 전혀 다른 방식으로 작성해서 걱정입니다.
결론부터 말씀드리자면 어느 정도 강의가 진행 되면서 코드가 복잡해졌는데, 매번 교수님이 의도하신 것과 계속 다른 방식으로 코드를 짜고 있습니다. 교수님의 방식은 굉장히 깔끔하시고 훌륭한걸 알고있습니다. 그치만 계속해서 제가 짠 코드가 큰 틀에서 봤을때 의미 없는건가 라는 생각도 드는 동시에, 교수님의 깔끔한 코드만 배우면 되는거 아닌가 라는 생각이 들면서 정답만 맞추자는 생각으로 공부를 하면서 공부에 흥미를 잃어가는것 같습니다. 현재 제가 뭔가 잘못된 것 같다는 생각이드는데 따끔하게 직설적인 꾸중을 듣고 싶습니다.#define CRTSECURE_NO_WARNINGS#include <stdio.h>void avengers(void){printf("Avengers assemble!\n");return 0;}void beep(void){printf("\a\n"); return 0;}void count(void){long input;long num = 1;char c;while (scanf("%ld", &input) != 1){printf("Your input - ");while ((c = getchar()) != '\n')putchar(c); printf(" - is not a integer. Please try again. \n");}while (input + 1 > num){printf("%ld\n", num);num = num + 1;}return 0;}int main(){char c;printf("Enter the letter of your choice: \n");printf("a. avengers b. beep\n");printf("c. count q. quit\n"); while (scanf("%c", &c) != 0){if (c == 'a')avengers();else if (c == 'b')beep();else if (c == 'c')count();else if (c == 'q')return 0;elseprintf("You need to choice in a to q");while ((c = getchar()) != '\n')continue; printf("Enter the letter of your choice: \n");printf("a. avengers b. beep\n");printf("c. count q. quit\n");}return 0;}
- 미해결홍정모의 따라하며 배우는 C언어
9.1 명함예제 함수에 넣은 배열 값이 이상합니다
안녕하세요. 9.1명함 예제를 푸는 도중 char 배열에 관해 문제가 생겨 질문 드립니다.아래에 질문 사항 있습니다.별 20개와 글자를 각각 char array에 넣었고 space를 추가하는 내용을 함수로 만들었습니다.그 후 space의 개수를 세기 위해 별 20개를 넣은 배열의 개수를 세어 봤습니다.배열의 개수를 세는 방법은 강의를 보기 전인지라 sizeof 함수를 사용했습니다.Main에서는 sizeof가 20을 반환하며 배열을 잘 읽었습니다.sizeof는 바이트를 세는 것이니 char 20개인 배열은 sizeof가 20을 반환하는 것이 맞을 테니까요.그런데 문제는 space를 추가하는 함수에서 발생했는데 해당 함수에서 배열을 읽을 때에는 sizeof가 4를 반환해 버린 것입니다.space 추가하는 함수는 배열의 주소를 매개변수로 받았습니다. (char star[20]에서 star만 입력했습니다.)해당 현상을 보면서 오만 생각이 다 들었는데 그 중 가장 합리적인 것 같은 생각은'space 추가 함수가 배열을 읽어올 때 배열 주소 값만 읽어서 sizeof가 int를 읽은게 아닐까?' 였습니다.int는 4바이트 이니까 그래서 4를 반환한게 아닐까 싶지만 확신을 가지진 못했습니다.아무리 생각해도 정확한 해답을 얻을 수 없어서 질문 남깁니다.질문 사항은 아래와 같습니다.main 함수와 추가한 함수에서 배열의 크기 값이 다른 이유는 무엇일까요?추가한 함수에서 올바른 배열의 크기를 읽으려면 어떻게 해야 하나요?해당 상황에서 sizeof가 4를 읽어온 이유가 무엇일까요?- star 배열에 20개의 별을 넣은 코드- star 배열을 함수에 입력한 방식- space를 추가하는 함수. int a, b, c는 배열 값이 이상하게 들어가는 걸 확인해 보려고 작성한 코드입니다.긴 글 읽어주셔서 감사합니다.도움 주시면 감사하겠습니다 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
char* arr[]
만들어진 함수의 매개변수를 보면 '[]'가 붙을 때가 있고 그렇지 않을 때가 있음을 선생님의 코드 속에서 살펴볼 수 있는데요, 어느 때 붙고 어느 때 붙지 않는 건가요? 우선, 이전 강의에서 숫자를 선택정렬 할 때는 만들어진 함수에 []가 쓰이지 않았었습니다
- 미해결홍정모의 따라하며 배우는 C언어
헤더 파일을 잘못 클릭해서 리소스 파일에 들어갓는데...
헤더 파일이 리소스 파일에 들어가있는데 어떻게 빼나요?ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
4.9 Printf() 함수가 인자들을 해석하는 과정에서 질문있습니다.
안녕하세요.Printf 함수가 인자들을 해석하는 과정 관련해서 질문있습니다.교수님께서 설명해주신 내용은 이해했습니다.다만, float과 double 모두 메모리에 스택으로 저장되는 과정에서원래 4바이트인 float이 8바이트로, 원래 8바이트인 double이 8바이트로 변환되어 저장되게 되는데, 그렇다면 float의 경우 8바이트 중 실제 사용되는(값이 저장되는 공간) 공간은 4바이트 뿐이니, 4바이트는 낭비된다고 생각해야 되나요? 아니면, 원래 값은 4바이트 크기로 저장되나,변환과정에서 4바이트가 8바이트를 모두 사용되도록 내부에 저장되는 값까지 변환되는 것인가요? 만약 전자(8바이트 중 앞의 4바이트만 사용)라면, 메모리의 float이 사용하는 공간을 제외한 뒤에 있는 4바이트에 다른 값을 저장하더라도 실제로는 아무런 문제가 없게 될것 같아서요. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
system bus에 관한 질문입니다
cpu, memory, 입출력 장치의 물리적인 구조를 앞 강의들에서 설명해주셔서 컴퓨터의 어떤 부분인지 알겠는데 system bus는 컴퓨터의 어떤부분인지 궁금합니다예를들어 하드웨어적인 부분은 아니고 운영체제 의 커널의 역할 인가요?, 또 다른 소프트웨어적인 부분인가요?
- 해결됨홍정모의 따라하며 배우는 C언어
11.4 문자열을 입력받는 다양한 방법들 15분 40초 Warning이 뜨는 이유?
warning C4047: '!=': 'int (__cdecl *)(void)'의 간접 참조 수준이 'int'과(와) 다릅니다.>> 위와 같은 경고가 뜨길래 원래의 코드에서 words[i] 배열의 원소를 (int)로 캐스팅하니까 경고가 뜨지 않더라구요. 혹시 이유를 알 수 있을까요? /* fgets() and fputs() */ char words[STRLEN] = ""; fgets(words, STRLEN, stdin); int i = 0; while ((int)words[i] != '\n' && (int)words[i] != '\0') { i++; } if ((int)words[i] == '\n') { fwords[i] = '\0'; } fputs(words, stdout); fputs("\nEND", stdout);