월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
불리언형
bool과 _Bool은 같은건가요?
- 해결됨홍정모의 따라하며 배우는 C언어
예시 3번 질문입니다!
안녕하세요! 예시 3번을 혼자 풀다가 l value와 r value가 헷갈려서 질문드려요. 아래가 제 코드인데요 5.2강에 나왔던 l value와 r value 개념을 이해했다고 생각했는데 막상 여기서는 저게(아래 코드에서 제가 주석 처리해둔 부분이요) 왜 l value인지 잘 모르겠습니다.. 강의의 교수님 코드처럼 int 변수를 하나 선언해서 first_char + i 값을 대입해준다음 그 변수 값을 변경하는 것은 가능한데 그것과 제 코드의 차이를 알듯 하면서도 잘 모르겠어서 혹시 좀 명쾌하게 설명해주실 수 있나요?! 감사합니다. first_char와 i 각각이 r value인건 맞으니까 'x*y에서 x와 y각각은 r value이지만 x*y값 자체는 l value이다.'라고 설명해주셨던 부분과 비슷한거같긴한데 말이죠.. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char first_char, last_char; char tmp; int repeat; printf("원하는 첫 알파벳 대문자를 입력하세요: "); scanf("%c", &first_char); getchar(); printf("원하는 마지막 알파벳 대문자를 입력하세요: "); scanf("%c", &last_char); tmp = first_char; repeat = last_char - first_char + 1; //문자 반복 for (int i = 0; i < repeat; i++) { while (first_char + i < last_char) { printf("%c", first_char + i); first_char + i = (first_char + i) + 1; // 이게 안되는이유: lvalue라서 // 이게 lvalue인 이유는...?: } first_char = tmp; printf("\n"); } return 0; }
- 미해결홍정모의 따라하며 배우는 C언어
int_fast8_t f8 의미
다른 시스템에서 다른 바이트를 쓸 수 있으니 이식성을 위해 고정하자는 의미로 #include <stdint> 라이브러리 포함시켜서 int_fast8_t f8; 를 선언했는데 이 표현이 a라는 변수를 8비트 중 가장 빠른 것으로 고정시키겠단 뜻이라 설명하셨는데 뭐 다른 int_32t 와 같은 건 다른 시스템에서도 32비트로 쓰이게 한다는 것과 적어도 16비트를 쓰겠다는 선언 등은 이해가 가는데 8비트 중 가장 빠른 것을 고정시키겠단 것은 이해가 잘 안됩니다 ㅜㅜ
- 미해결홍정모의 따라하며 배우는 C언어
군대에서 visual studio
군대에서 토익 혹은 c언어 공부하려고 마음 먹고 있었는데, c언어를 공부하기로 결정했습니다. 연등을 신청해서 하루에 1~2시간 정도 사이버지식정보방에서 컴퓨터를 이용하여 인강을 듣고, 프로그래밍 연습을 합니다. 그런데 visual studio를 다운 받고 istaller도 하고 하면 컴퓨터를 재시작해야 합니다. 근데 군대 컴퓨터는 재시작 하면 저장파일이 다 사라져서 문제입니다. d드라이브에 넣어서 쓰자니 문제가 생길것 같아서 그렇게는 못하겠습니다. 그래서 구름ide 라는 웹,클라우드 기반 매체를 이용해서 공부하려고 하는데 괜찮을지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
코드가 텍스트 파일을 받아오지 못합니다.
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int ch; FILE* fr; unsigned long count = 0; if (argc != 2) { printf("Usage : %s filename\n", argv[0]); exit(EXIT_FAILURE); } if ((fr = fopen(argv[1], "r")) == NULL); { printf("Can't open %s\n", argv[1]); exit(EXIT_FAILURE); } while ((ch = fgetc(fr)) != EOF) { fputc(ch, stdout); count++; } fclose(fr); printf("FILE %s has %lu characters\n", argv[1], count); return 0; } 보시는 바와 같이 코드를 강의코드와 똑같이 작성하고 소스코드와 같은 위치에 txt파일을 만들고(내용도 강의와 똑같습니다) 명령줄 인수도 올바르게 넣었는데 작동이 안됩니다. 실행시 Can't open my_input.txt 라 출력되는것을 보면 인수는 잘 들어갔는데 텍스트파일을 찾지 못하고 있습니다. 도대체 어떤 이유에서인지 알고 싶습니다. 부탁드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
3:07 cmd 창 explorer .
커맨드창에 explorer . 를 치면 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 이렇게 떠서 경로들을 환경변수 Path에 다 입력하고도 했는데 명령어가 실행이 안되는 이유는 뭘까요 ..ㅜㅜ
- 해결됨홍정모의 따라하며 배우는 C언어
visual studio x64, x 86
x64와 x 86의 차이가 무었인가요?
- 미해결홍정모의 따라하며 배우는 C언어
컴파일되는 파일
사소한 질문이지만... lecture15.c를 실행하고 싶은데 계속 lecture11.c가 실행되는 이유는 무엇때문일까요?
- 미해결홍정모의 따라하며 배우는 C언어
define 과 변수 의 차이
기호적 상수와 전처리기 파트에서 PI를 define 하는데 float PI = 3.141592; 와 차이가 무엇인가요?
- 해결됨홍정모의 따라하며 배우는 C언어
13:25 stack frame에 대해서 질문 있습니다.
교수님께서 stack frame이라고 하면은 보통 함수 전체 예를 들면 main() 전체에 필요한 메모리를 의미한다고 하셨는데 이 때 함수 전체에 필요한 메모리가 교수님이 바로 뒤에서 설명하신 stack이 push됐다 pop됐다 하는 stack 자료구조에서 사용되는 stack 메모리에 한정되는 메모리를 의미하셨는지 알고 싶습니다.
- 해결됨홍정모의 따라하며 배우는 C언어
3:20 getchar()
왜 갑자기 getchar() 이 나오는 건지 모르겠어요. getchar가 아니라 scanf로 입력받았던 건데 왜 갑자기 getchar가 나오나요?
- 해결됨홍정모의 따라하며 배우는 C언어
if (!isspace(c) && !ine_flag) 질문 있습니다!
bool line_flag = false; 라고 초기화했잖아요, 그래서 맨 첫번째 줄바꿈이 일어나기 전에 입력할 때는 첫번째, 두번째 if문의 조건이 다 성립하니까 n_chars++도 실행되고 n_lines++도 실행될 거라 생각했는데 왜 실제로는 첫번째 if문만 성립해서 n_chars++만 실행되는 건가요?
- 미해결홍정모의 따라하며 배우는 C언어
(x!=0) 과 !(x=0)
안녕하세요. 관련내용으로 추가학습을 하다가 질문드립니다. and(&&)의 의미상 , x가 0도 아니고 1도 아니어야 T를 의미하는 식 은 아래와 같다고 알고 있습니다. (x!=0)&&(x!=1) <=> !(x==0)&&!(x==1) 즉 , (x!=0) 과 !(x==0) 이 두가지 식은 같은거고 , 두가지 식 모두 , 각각의 식의 의미대로 x=0이면 F, x 가 0이 아니면 T 의 값을 가지는 논리값을 따질 수 있는 개체(피연산자) 로서 다루어지는건가요? 당연해 보이기는 한데 , 보통 , 3>2 , x==0 , y==2 이렇게 부정표현이 없는것들이 논리식에서 피연산자로 다루어지다 보니 살짝 헷갈려서 질문드립니다!!
- 미해결홍정모의 따라하며 배우는 C언어
4294967295 to binary (변환하는 방법이 궁금합니다.)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 십진수 4294967295 를 이진수인 11111111111111111111111111111111로 출력해보려고 여러 가지 알아보고 했습니다. 어려운 코드가 많이 나오고 아직 이해하기는 어려웠던 것 같습니다. 실제로 제대로 출력도 못한 것 같고요! 지금 단계에서 이해는 되지 않더라도 어떤 함수를 사용해야 하는 지 알고 싶은데 혹시 괜찮으시다면 알려주실 수 있으실까요!
- 미해결홍정모의 따라하며 배우는 C언어
교재관련하여 질문드립니다!!!
책을 구매하려고 하는데 강의에서 주로 사용하는 주교재가 'C Primer Plus 6판'을 사용하는 것이 맞는지 궁금합니다!!
- 해결됨홍정모의 따라하며 배우는 C언어
readbooks, readbook2 함수 구현
struct book* read_books(const char* filename, int* n) { FILE* fp = fopen(filename, "r"); if (fp == NULL) { fputs("Can't open file.", stderr); exit(1); } //struct book* book = (struct book*)malloc(sizeof(struct book) * *n); int flag; flag = fscanf(fp, "%d%*c", n); if (flag != 1) { printf("File read failed"); exit(1); } struct book* book = (struct book*)malloc(sizeof(struct book)* *n); if (!book) { printf("Malloc() failed."); exit(1); } for (int i = 0; i < *n; i++) { fscanf(fp, "%[^\n]%*c", book[i].name); fscanf(fp, "%[^\n]%*c", book[i].author); /*if (flag != 2) { printf("File read failed"); exit(1); }*/ } fclose(fp); return book; } 안녕하세요! readbook함수 구현에서, malloc으로 구조체 힙 메모리 할당 코드를 주석으로 처리된 위치에 구현하였는데 계속 런타임 에러가 뜨더라구요. 교수님께서는 위와 같은 위치로 구현하였는데 두 위치상 코드의 차이를 모르겠습니다.. void read_book2(const char* filename, struct book** book_dptr, int* n) { FILE* fp = fopen(filename, "r"); if (fp == NULL) { fputs("Can't open file.", stderr); exit(1); } int flag; flag = fscanf(fp, "%d%*c", n); if (flag != 1) { printf("File read failed"); exit(1); } for (int i = 0; i < *n; i++) { fscanf(fp, "%[^\n]%*c", book_dptr[i]->name); fscanf(fp, "%[^\n]%*c", book_dptr[i]->author); } fclose(fp); } readbook2함수 구현에서 struct book의 이중포인터를 파라미터로 가져오는거라 malloc으로 힙메모리를 새로 할당할 필요가 없다고 느껴, 위와같이 구현하였는데 런타임에러가 생기더라구요. 위와 같은 코드에서 런타임 에러가 나는 이유를 못찾겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
draw 함수의 코드가 이해가 잘 안됩니다.
왜 아래와 같이 코드를 작성하면 안 되는지 알고 싶습니다. 아래와 같이 draw 함수를 정의하면 cmd창에 아무것도 안 뜨네요. void draw(int n) { printf("*" * n); printf("\n"); }
- 해결됨홍정모의 따라하며 배우는 C언어
배열형태를 지닌 포인터 매개변수에 대한 질문입니다.
이번 예제에서 교수님께서 함수의 포인터 매개변수를 *arr이 아닌 arr[]로 하시는것을 보고 의구심이 생겨 이것저것 테스트트하고 저 나름대로의 결론을 내려보았습니다. 물론 전 코딩 초보자라 저의 추론이 틀릴수도 있기에 확실한 답을 얻고싶어 질문을 드립니다. #include <stdio.h> int* p(int p[]) { return p; } int main() { int a = 5; printf("%p %p", &a, p(&a)); return 0; } #include <stdio.h> double average(double ptr[], double n)// 매개변수를 포인터로. 인수의 주소값을 지님. *ptr == ptr[] { double avg = 0.0; for (int i = 0; i < n; ++i) { avg += ptr[i];// *ptr, ptr[] = 배열대입 -> 배열의 시작 주소값이 ptr에 대입. printf("%d번째 주소와 값 : %p, %lf\n", i + 1, &ptr[i], ptr[i]); //*(ptr + i) == ptr[i] : 배열 매개변수에 주소값을 대입시 그 주소값을 시작점으로 하는 배열이 선언 ? } avg /= n; return avg; } int main() { double arr1[5] = { 10,13,12,7,8 }; printf("arr1의 주소와 값\n"); for (int i=0;i<5;++i) printf("%d번째 주소와 값 : %p, %lf\n", i + 1, &arr1[i], arr1[i]); double arr2[3] = { 1.8,-0.2,6.3 }; printf("\narr2의 주소와 값\n"); for (int i = 0; i < 3; ++i) printf("%d번째 주소와 값 : %p, %lf\n", i + 1, &arr2[i], arr2[i]); printf("\n\narr1 함수대입.\n"); printf("arr1의 평균 : %lf\n\n", average(arr1, 5));// 특정 요소가 지정되지 않은 배열은 포인터에 대입시 &를 쓰지않음. printf("arr2 함수대입.\n"); printf("arr2의 평균 : %lf\n\n", average(arr2, 3)); return 0; } 테스트해본 결과 배열을 인수로 할때뿐만 아니라 변수의 주소값을 매개변수에 대입할때도 *arr대신 arr[]을 매개변수로 사용하는것에 차이나 오류가 없었습니다. 그렇다고 해서 포인터 선언으로 int arr[] = &a; 가 되는건 또 아니였습니다. 제 생각엔 배열A를 매개변수로, 주소값을 인수로 대입하면 그 주소값을 시작점으로 삼는 배열A가 선언되는것 같았습니다. 배열B을 인수로 대입할땐 A나 B나 시작 주소값이 같기에 A[n] == *(A + n) == B[n](n은 자연수) 인 것이고 변수C의 주소값를 인수로 대입할땐 배열 자체가 주소값을 표현하기에(("%p", A) == ("%p", &C)) 별 문제가 없는것이 아닐까 생각하고 있습니다. 제 생각에 어떤 오류가 있나요? 오류가 있다면 올바른 답은 무엇인가요? 답변을 부탁드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
scanf error에 관한 질문
7.4 다중 선택 강의를 따라 하다 C6031 Return value ignored: 'scanf' 를 해결하지 못하고 있는 상태 입니다. 일단 제가 만든 코드는 아래와 같습니다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define BASE1 12000000.0 #define BASE2 46000000.0 #define BASE3 88000000.0 #define BASE4 150000000.0 #define BASE5 300000000.0 #define BASE6 500000000.0 #define RATE1 (6.0 / 100.0) #define RATE2 (15.0 / 100.0) #define RATE3 (24.0 / 100.0) #define RATE4 (35.0 / 100.0) #define RATE5 (38.0 / 100.0) #define RATE6 (40.0 /100.0) #define RATE7 (42.0 /100.0) #define BASIC_DEDUCTION 1500000.0 int main() { double income = 0.0; double tax = 0.0; double tax_base = income - BASIC_DEDUCTION; printf("Enter your annual income : "); scanf("%f", &income); if (tax_base <= BASE1 && tax_base > 0) tax = tax_base * RATE1; else if (tax_base <= BASE2) tax = (BASE1 * RATE1) + ((tax_base - BASE1) * RATE2); else if (tax_base <= BASE3) tax = (BASE1 * RATE1) + ((BASE2 - BASE1) * RATE2) + ((tax_base - BASE2) * RATE3); else if (tax_base <= BASE4) tax = (BASE1 * RATE1) + ((BASE2 - BASE1) * RATE2) + ((BASE3 - BASE2) * RATE3) + ((tax_base - BASE3) * RATE4); else if (tax_base <= BASE5) tax = (BASE1 * RATE1) + ((BASE2 - BASE1) * RATE2) + ((BASE3 - BASE2) * RATE3) + ((BASE4 - BASE3) * RATE4) + ((tax_base - BASE4) * RATE5); else if (tax_base <= BASE6) tax = (BASE1 * RATE1) + ((BASE2 - BASE1) * RATE2) + ((BASE3 - BASE2) * RATE3) + ((BASE4 - BASE3) * RATE4) + ((BASE5 - BASE4) * RATE5) + ((tax_base - BASE5) * RATE6); else if (tax_base > BASE6) tax = (BASE1 * RATE1) + ((BASE2 - BASE1) * RATE2) + ((BASE3 - BASE2) * RATE3) + ((BASE4 - BASE3) * RATE4) + ((BASE5 - BASE4) * RATE5) + ((BASE6 - BASE5) * RATE6) + ((tax_base - BASE6) * RATE7); printf("Your tax amount for the annual income is %f.\n", tax); return 0; } 계속 scanf에 입력한 값이 정확히 반영되지 않아 debug를 해보니 제가 입력한 값을 받아들이는게 아니라 scanf returned value 1 int 을 보아하니 제가 입력한 값의 갯수를 반영 하는듯 합니다. 조언 부탁드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
3.13 불리언형
#include <stdio.h> #include<stdbool.h> int main() { printf("%u\n", sizeof(_Bool)); // 1 byte _Bool b1; // Bool type 은 true 나 false -> 2가지만 가질 수 있음 b1 = 0; // false b1 = 1; // true // -> 정수형이기 때문에 false : 0, true : 1 printf("%d\n", b1); bool b2, b3; b2 = true; b3 = false; printf("%d %d\n", b2, b3); return 0; } 이렇게 코드 작성했는데 계속 식별자 "_Bool " 이 정의되어 있지 않다는 오류 메시지가 뜹니다 ㅠㅠ 영상에선 오류없이 잘 작동이 되던데 혹시 뭐가 문제인지 알 수 있을까요?