월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
2차원 배열
안녕하세요, 질문드립니다. 앞강의에서도 계속해서 다루었던 부분인데 이해가 안되서 질문드립니다. int arr[2][3] = {{1,2,3}, {4,5,6}} 에서 arr == arr[0]인 것은 둘다 모두 arr배열의 첫주소를 가르킨다는 점에서 타당하다고 생각합니다. 이해가 안되는 부분은 arr[0]와 &arr[0]가 같다는 점인데요. arr[0]가 위 배열의 1행을 의미하는 것이므로 {1,2,3}의 주소를 가르킵니다. 하지만 여기서 다시 주소연산자를 붙이는 것이 이해가 되지않습니다. arr[0] 자체로 첫번째 주소를 가르키고 있는데 여기서 다시 주소연산자를 붙인 결과가 같다는 것이 이해가 되지 않습니다. 긴글 읽어주셔서 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
사용자 지정 함수 변수 설정
사용자 지정 함수를 만들 때 입력하는 변수의 개수를 고정하지 않을 수도 있나요? 이번 강의에 나왔던 print_multiple_chars() 를 예로 들면 (char c, int n_stars, bool print_newline) 이 중에서 마지막 변수 bool print_newline 란에 true or false 를 입력하면 그에 맞는 출력이, 아무것도 입력하지 않으면 자연스레 false로 인식하도록 함수를 구성할 수도 있는 건가요?
- 해결됨홍정모의 따라하며 배우는 C언어
따배씨 스터디 많은 관심 부탁드립니다 ㅎ
스터디 란에 글 올렸습니다 관심 있으신분들 참여 부탁드려요 ㅎ
- 미해결홍정모의 따라하며 배우는 C언어
for문을 while문으로 변환했는데 실패함.
void display(char cr, int lines, int width) { int row, col; row = 1; col = 1; while (1) { if (row > lines) break; while (1) { if (col > width) break; printf("%c", cr); col++; } printf("\n"); row++; } } // //void display(char cr, int lines, int width) //{ // int row, col; // // for (row = 1; row <= lines; row++) // { // for (col = 1; col <= width; col++) // putchar(cr); // printf("c", cr); 과 동일한 기능을 한다. // putchar('\n'); // printf("\n"); 와 동일한 기능을 한다. // } //} 아래 for문을 위의 while문으로 바꿨는데 정상 작동 안합니다. while은 일부러 무한 루프로 잡았구요 제가 조건식을 넣고 싶어서 그랬습니다. A 5 5같이 입력해도 첫줄만 정상 출력되고 여백이 생기네요. 어디가 문제인거죠?
- 미해결홍정모의 따라하며 배우는 C언어
ANSI UTF-8 질문
위의 예제에서 SetConsoleOutputCP(CP_UTF) 함수를 사용하여 UTF-8 모드로 출력하라고 설정했잖아요. 궁금한게, 읽을 텍스트 파일이 UTF-8 모드로 저장되어있다면 위 함수를 사용해주어야 한글이 안깨지고 텍스트 파일이 ANSI로 저장되어있었다면 위 함수를 사용하면 한글이 깨져서 나오고 사용하지 않으면 한글이 정상적으로 나오는데 왜 이런건지 이유를 알고싶습니다 콘솔의 기본출력모드가 ANSI로 되어있어서 그런건가요? 그리고 또 궁금한게 왜 ANSI 방식으로도 한글을 출력할수가 있는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
scanf로 문제 계속 받고 나오는 방법
int main() { const char first_char = 'A'; // const char last_char = 'T'; // TOOD: use scanf() / 즉 last_char(마지막글자)를 scanf로 입력받아서 쓸 수 있게 만들어봐 // const int num_rows = last_char - first_char + 1; int r; // num_rows loop int c; // character loop char last_char = 'C'; for (last_char; last_char != 'q'; scanf("%c", &last_char)) { printf("Input last_char (quit to q) : "); scanf("%c", &last_char); const int num_rows = last_char - first_char + 1; for (r = 0; r < num_rows; ++r) { for (c = first_char; c <= first_char + r; ++c) // { printf("%c ", c); } printf("\n"); } for (r = 0; r < num_rows; ++r) { for (c = first_char + r; c != first_char + num_rows; ++c) { printf("%c ", c); } printf("\n"); } printf("num_rows : %d, r : %d, first_char : %c, last_char : %c, c : %c\n", num_rows, r, first_char, last_char, c); printf("\n"); } 입력 받는건 아주 잘 받는데 q 입력했을 때 바로 안나오고 엄청난 이상한 출력 길게 나오고 끝나네요.. 뭐가 문젠가요? 출력은 예제2번에 예제3번 합쳐서 나오고 끝나는 출력입니다. ex) A AB ABC BC C
- 미해결홍정모의 따라하며 배우는 C언어
fread fwrite 질문
다름이 아니라, 위에 코드에서 보다시피 fflush() 아니면 rewind() 함수를 넣지 않고 실행시 위와 같은 결과가 나오는데요. 명확하게 어떤 이유에서인지 알지 못하겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
comma 연산자
int money = (123, 456); 에서 money가 456이 되는 걸 잘 이해 했습니다. 그냥 호기심일 뿐인데 수학 그래프를 나타낼때 (x, y)중 y를 나타내는 방식이랑 되게 유사하여 혹시 저 표현식에서 123은 일시적인 값이라 사라지는건가요? 아니면 money에 귀속이 되어 다른 명령어로 불러드릴 수 있는건 가요?
- 미해결홍정모의 따라하며 배우는 C언어
signed char에 최고 FF가 홀드 되어야 하는데 왜 FFFF가 표시 되는지 궁금합니다
4.10절 21라인 강의를 듣다가 아래와 같은 시험을 하였습니다. - 변수 j는 signed char로서 1바이트에 – 128 ~ 127까지를 저장(hold)할 수 있다. - scanf() 로 -1을 읽어 들이면 마이너스는 2의 보수로 표현하므로 j에 FF가 입력되어야 한다. 그런데 첫번째 printf를 보시면 왜 FFFF가 표시 되는지 모르겠습니다. 2번,3번째 printf는 형식지정자에 맞게 출력 된 것 같기도 합니만, j변수에는 분명 FF가 저장되어 있을 텐데 이해가 가지 않습니다. 그 이후 printf도 마찬가지입니다
- 미해결홍정모의 따라하며 배우는 C언어
7.8 단어 세기 예제 질문입니다
코드는 #include <stdio.h> int main() { int lines = 0; int words = 0; int chars = 0; char arr[30]; printf("Enter Text : \n"); for (int i = 0; i <= arr; ++i) { scanf_s("%s", &arr[i],sizeof(arr[i])); chars++; if (arr == '.') ++lines; else if (arr == ' ') ++words; } printf("characters: %d words: %d lines: %d", chars, words, lines); } 이렇게 작성해 봤는데 '<=': 'int' differs in levels of indirection from 'char [30]' '==': 'char [30]' differs in levels of indirection from 'int' '==': 'char [30]' differs in levels of indirection from 'int' 이 세개의 문구의 warning이 뜨는데 프로그램이 입력만받고 결과가 출력이 안됩니다.. int i를 char로도 바꿔봤는데 똑같은 warning이 뜨던데 이 코드에서 어떻게 수정해야할까요?
- 미해결홍정모의 따라하며 배우는 C언어
c언어를 입력하다가 중간에 수정을 하게 되면 뒤에 글자가 사라지고 입력이 될 때가 있는데 어떻게 해결하나요??
c언어를 입력하다가 중간에 수정을 하게 되면 뒤에 글자가 사라지고 입력이 될 때가 있는데 어떻게 해결하나요??
- 미해결홍정모의 따라하며 배우는 C언어
Configuration Properties에 Debugging이 없으면 어떡하나요?
사진처럼 General만 있고 Debugging이 없는데 어떡해야 생기는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
const와 define
const와 메크로define의 정확한 차이점이 뭘까요..?
- 미해결홍정모의 따라하며 배우는 C언어
calloc() 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키 강의에서 calloc() 함수는 할당시 할당된 요소들의 값을 모두 0으로 초기화 한다고 했잖아요. 근데 실제로 실행해보니 모두 0으로 초기화가 되지 않네요. 왜이런걸까요?
- 미해결홍정모의 따라하며 배우는 C언어
오브젝트 코드
C 파일 하나당 오브젝트 코드가 여러 개일 수 있나요??
- 미해결홍정모의 따라하며 배우는 C언어
뜨ㅣ어쓰기
int maine 사이에 띄어쓰기는 해야 하는 거죠??
- 미해결홍정모의 따라하며 배우는 C언어
EOF를 입력의 중간에 넣으면 26이 출력되면서 루프 탈출이 안됩니다
EOF 단 하나만을 입력하는 경우에는 정상적으로 반복문 탈출이 가능합니다 하지만 예를 들어 aaEOF처럼 다른 데이터와 함께 입력하는 경우에 EOF는 -1이 아니라 26을 출력하며 반복문을 탈출하지 못합니다 이유를 알고 싶습니다 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int c; while (1) { c = getchar(); printf("%d\n", c); if (c == EOF) break; } return 0; }
- 미해결홍정모의 따라하며 배우는 C언어
이스케이프 언어 \b 질문입니다.
\b를 사용할때 printf("ABCDF\b\b\b\b\b")이런식으로 입력하면 처음의 A만 삭제가 되는데 printf("ABC\b\bDEF")이런식으로 사용하면 BC가 둘다 사라집니다 왜 이런현상이 발생하는ㄱ ㅓㄴ가요?
- 미해결홍정모의 따라하며 배우는 C언어
8.5강 5분 5초 질문있습니다. getchar을 scanf로 바꿔도 되나요?
while ( c = getchar() != '\n' ) 부분을 getchar 말고 scanf 써도 되나요?? scanf가 더 큰 포함관계라고 생각하는데 넣어도 상관없나요?
- 해결됨홍정모의 따라하며 배우는 C언어
scanf()의 format specifier 순서를 바꿔봤는데 이해되지 않는 부분이 생겼습니다.
scanf("%c %d %d", &c, &rows, &cols); 에서 문자 / 숫자 / 숫자 / 엔터(\n)를 입력하면 그 다음 while문 반복에서 %c가 입력 버퍼에 남아있는 '\n'를 받으므로 입력이 초기화가 안된다면 scanf("%d %d %c", &rows, &cols, &c); 형태처럼 처음으로 입력받는 format specifier가 숫자형 데이터에 관한 경우라면 숫자 / 숫자 / 문자 / 엔터(\n)를 입력했을 때 그 다음 while문 반복에서 format specifier가 '\n'를 무시하고 입력버퍼에서 비워버리기 때문에 getchar()의 도움없이 '\n'를 초기화시킬 수 있다고 생각했고 실행해보니 정상작동하는 것을 확인했습니다. 그런데 여기서 한가지 이해가 안 가는 부분이 발생했는데 if (c == '\n') break; 를 만족시키기 위해 입력을 차례대로 숫자 / white-space / 숫자 / white-space / '\n' / '\n' 을 입력해도 %c가 \n을 입력받지 않는다는 것을 알게되었습니다. 결과는 %d %c %d 일 경우에도 마찬가지였습니다. 정수형 데이터의 입력 지시자들이 정확한 숫자의 입력을 받고 난 후에 문자형 데이터의 입력 지시자가 입력받을 차례임에도 불구하고 %c가 %d처럼 '\n'을 무시하고 입력 buffer에서 지워버리는 이유가 무엇인가요?