월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
scanf 오류가 계속 뜹니다
강의와 똑같이 코드를 작성했는데 계속 오류가 뜹니다 scanf_s를 사용하면 성공이 되긴 하는데 왜 이러는 건가요??
- 미해결홍정모의 따라하며 배우는 C언어
putchar() / getchar() 강의 중
// while( (ch = getchar()) != '\n'){ if( ch >= 'a' && ch <= 'z') // 'A' = 65, 'a' = 97 ch -= 'a' - 'A'; else if(ch <= 'A' && ch >= 'Z') ch += 'a' - 'A'; putchar(ch); 위와 같은 코드에서 getchar()로 a 를 받았다면 ch = 'a' - 'a' -'A' 로 되어 ch = -'A' 가 남게 되고 A가 출력되는 것 처럼 보이는데, int main(){ char c = -'a'; printf("%c", c); } 이렇게 새롭게 코드를 작성해서 출력하면 컴파일 오류가 발생합니다. char형에는 문자만 담을 수 있는 걸로 아는데 -는 어떻게 처리되나요? 그리고 getchar()로 c 를 받았다면 ch = 'c' - 'a' -'A' 로 되는데 어떻게 C가 출력되는지 과정이 궁금합니다. 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
코드 질문입니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <ctype.h> #include <stdbool.h> #define STOP '.' int main() { char ch; int Characters = 0; int Words = 0; int Lines = 0; printf("Enter text : \n"); scanf("%d %d %d", &Characters, &Words, &Lines); while (( ch = getchar() != STOP ) { if ( ch = ' ') Words++; else if ( ch = '\n') Lines++; else Characters++; } printf("Characters = % d, Words = % d, Lines = % d\n", n_chars, n_words, n_lines); return 0; 처음에는 이런식으로 문제를 풀었었는데 bool타입응용이 떠오르질 않아서 첫 실행파일 보여주셨을때 보고 이렇게 풀어봤었습니다. 가동했을때 문자열, 라인은 잘 나오는데 Words 부분만 1개가 부족하게 나오더라구요 +1도해보고 다른 생각도 많이해봤는데 if 문가지고만으로는 아직 어렵더라구요 알려주신 힌트 토대로는 성공했는데 혹시 bool 타입을 쓰지 않고는 풀리지 않는 문제였을까요?
- 미해결홍정모의 따라하며 배우는 C언어
define 기능을 잘 모르겠어서 해봤어요
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { char c = 0; int num = 0; for (num = 1; num <= 5; ++num) { for (c = 'A'; c <= 'K'; c++) { printf("%c ", c); } printf("\n"); } return 0; } 첫번째 문제 이렇게 풀었는데 이것도 괜찮을까요?
- 미해결홍정모의 따라하며 배우는 C언어
빈칸을 입력했을 때 break하는 코드 작성에 관하여
안녕하세요 printf("Input a color name (empty line to quit):\n");을 받고 입력을 할 때 빈칸인 상태로 엔터를 누르면 프로그램이 끝나도록 하는 코드를 작성하는 과정에서 난항을 겪어서요. 몇 가지 여쭤보려고 합니다. 제가 시도했던 것들은 밑에 두 가지입니다. if (strcmp(choice, '\0') == color_is_found) break; if (choice == NULL) break; 첫 번째는 문자열이랑 문자를 비교해서 실행이 제대로 안된다는 것을 깨달았고, 두 번째도 문자열이랑 0인 NULL은 == 연산자로는 비교를 할 수 없어서 제대로 작동이 되지 않았다고 생각합니다.(제가 찾아보고 내린 결론이라 맞는지도 궁금합니다) 그래서 if (scanf("%[^\n]%*c", choice) != 1) break;를 하면 아무것도 입력안하고 엔터를 입력했을 때 프로그램이 종료되는 것은 확인했지만 왜 위 코드가 이러한 기능을 수행하는지 아직 이해가 되지 않습니다. 질문은 두 가지입니다! 1. 제가 시도했던 것들이 실패한 이유에 대해 제가 생각한 결론(노랑 형광색 부분)이 맞는 것일까요? 2. 왜 if (scanf("%[^\n]%*c", choice) != 1) break;를 하면 첫입력에 엔터를 입력했을 때 프로그램이 종료가 되는건가요? [^\n]이 \n이 나올 때까지 입력을 받는다는 것과 %*c가 마지막글자(\n)을 없앤다는 것도 알고 있지만 왜 break로 연결이 되는지는 아직 이해를 못했습니다. 설명을 해주실 수 있을까요?
- 해결됨홍정모의 따라하며 배우는 C언어
텍스트 파일 입출력 예제에서 텍스트 파일을 못찾는 것 같아요,,
#define _CRT_SECURE_NO_WARNINGS #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; } 코드도 맞게 작성했고 파일 이름이랑 다 맞게 했는데 이렇게 나오네요. . . , , , , , , ,ㅠㅠ 문제가 뭘까요....?! 크아악
- 미해결홍정모의 따라하며 배우는 C언어
8.8 메뉴만들기 예제 질문입니다
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void count(); int main() { char c = 0; int number = 0; while (1) { printf("Enter the letter of your choice: \n"); printf("a. avengers b. beep\n"); printf("c. count q. quit\n"); if (getchar(c) == 'a') { printf("Avengers assemble!\n"); } else if (getchar(c) == 'b') { printf("\a"); } else if (getchar(c) == 'c') { count(); } else if (getchar(c) == 'q') { exit(1); } else { printf("wrong choice, choose try again!\n"); } } return 0; } void count() { int number; printf("Enter an integer :"); scanf("%d", &number); for (int i = 1; i <=number; i++) { printf("%d\n", i); } return 0; } 그냥 결과화면만 본 상태에서 스스로 만든 코드입니다. switch문 대신 if문이 익숙하게 느껴져서 이렇게 만들었는데요 ㅠㅠ 기능이 실행되는 것은 정상적으로 되는데 메뉴에서 문자를 두번 입력하거나 혹은 엔터키를 여러번 눌러야지 실행이 되요 ㅠㅠ 무슨 문제일까요?? 일단 코드상 문제는 없어 보이는데 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
_itoa() error!
안녕하세요 10분경~12분 이후 강의를 듣다가 제 환경에서는 실행이 되는 것 같지 않아 질문드립니다. #include <stdlib.h> #include <stdio.h> int main(int argc, char * argv[]) { char temp[100] ; puts(_itoa(10, temp, 16)); sprintf(temp, "%x", 10); puts(temp); return 0; } 안녕하세요 11분경 이후 강의를 듣다가 제 환경에서는 실행이 되는 것 같지 않아 질문드립니다. 다음과 같이 코드를 짰고, 이를 돌려보려 하였으나 오류가 아래와 같이 났습니다. '_itoa()가 C99에서는 작동하지 않는다'라고 이해했고, 혹시나 표준으로 이름이 바뀌기 전인 itoa()를 사용하나 싶어서 itoa()로 코드를 바꾸고 돌려보았지만, 동일하게 에러가 발생하였습니다. 구글을 둘러보니 코딩을 할 때마다 _itoa()를 정의하라고 하는데, 더 좋은 방안이 있을 것 같아 질문을 드립니다. 문제가 무엇이고, 앞으로 _itoa()를 문제없이 사용하려면 어떻게 해야하는지 여쭤보고 싶습니다. 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
02분 경 질문이 있습니다.
2분경에 교수님께서 다음과 같이 코드를 작성하면, puts(str)에서 warning을 띄워준다고 하셨습니다. 저는, warning과 error가 함께 떴습니다. 컴파일러마다 결과가 다른 것은 인지하고 있습니다. 다만, 궁금한 점은, 이 에러들이 의미하는 바가 궁금합니다 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
필기한 내용 정리 질문
안녕하세요~ 따배씨 강의 수강생입니다. 먼저 좋은 강의를 만들어주셔서 감사하다는 말씀드리고 싶습니다. 다름 아니라 현재 공부하면서 필기한 내용을 워드로 정리하고 있는데, 이 내용을 개인 블로그에 올려도 괜찮을지 여쭤보고 싶어서요 당연히 출처는 적어놓을 텐데, 중간마다 강의 화면을 캡처 하기도 해서 혹시 문제 되지 않을까 해서 질문 드립니다! 그럼 오늘도 좋은 하루 되세요~ 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
8:46~ 9:30 질문 재업로드
질문에 답을 달아주셨는데 제가 답글을 단 걸 찾지 못해서 다시 올립니다. 이렇게 답변을 올려주셨는데, 저 또한 설명해주신 것처럼 int(*pa)[2]일때 ar[2][3]이 들어갈 것이라고 이해를 하고 있었습니다. 하지만, 실제로 코드를 돌려보면 int(*pa)[3]일때, ar[2][3]이 잘 들어가게 됩니다. 아시는 분 계시면 답변 부탁드립니다. 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
배열의 숫자를 바꾸니 런타임 에러가 발생합니다!!
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.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); // ascending order 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, min_idx, k; // One by one move boundary of unsorted subarray for (i = 0; i < n - 1; i++) { min_idx = arr[i]; for (j = i + 1; j < n; j++) //Note i + 1 { if (min_idx > arr[j]) { min_idx = arr[j]; k = j; } } swap((arr + i), (arr + k)); } } 배열이 int arr[] = { 64, 25, 12, 22, 11 };이면 오름차순으로 출력이 되는데, arr의 배열을 { 3, 25, 44, 22, 11 } 이렇게 바꾸니까 런타임에러가 발생합니다.. 왜 이런 걸까요?
- 미해결홍정모의 따라하며 배우는 C언어
flowchart를 만들어보고 코드를 작성을 하는 게 좋은가요?
교수님이 올려주신 https://www.geeksforgeeks.org/selection-sort/ 여기서 선택정렬의 flowchart가 있어서 이것을 구현하는 연습을 해보면 좋을 것 같으면서도 비효율적인 접근 방법인 것 같기도 한 생각이 듭니다. 그래서 일단을 직접 해보고 생각을 하려고 하는데, 교수님이나 다른 분은 알고리즘을 구현하기 전에 flowchart를 만들어보는 것에 대해서 어떻게 생각하는지 궁금합니다! p.s) 추가로 flowchart를 그리지 않는다면, 어떤 방식으로 어떤 순서를 거쳐서 문제를 해결하시는지도 궁금합니다. 예를 들어 알고리즘의 구현 과정을 글로 쭉 한번 써본다 와 같은 방법들입니다!
- 미해결홍정모의 따라하며 배우는 C언어
strcmp 구현 예제 해석을 못하겠습니다!!
int strCmp( const char *s1, const char *s2 ) { const unsigned char *p1 = ( const unsigned char * )s1; const unsigned char *p2 = ( const unsigned char * )s2; while ( *p1 && *p1 == *p2 ) ++p1, ++p2; return ( *p1 > *p2 ) - ( *p2 > *p1 ); } stackoverflow에서 이렇게 구현한 예제를 봤는데요 왜 이렇게 하는지 잘모르겠어서 질문드립니다. 왜 unsigned char로 casting을 하는건가요?? 제가 따로 사용하지 않는 변수를 만들어서 거기에 대입해서 디버깅도 해봤지만, 왜 저렇게 캐스팅을 하는지 모르겠습니다.. 뭔가 return ( *p1 > *p2 ) - ( *p2 > *p1 );에서 역참조를 한 값을 비교해서 true와 false를 이용해서 0 -1 1을 리턴하겠다는 것은 이해했는데, 왜 unsigned로 바꿔주는지를 모르겠습니다
- 미해결홍정모의 따라하며 배우는 C언어
8:46~9:07
교수님께서 강의를 해 주실때 ar1[2][3]은 3개짜리이고, ar2[3][2]는 두개짜리라고 말씀해주셨습니다. 하지만 저는 반대로 ar1은 [3]개의 원소를 담은 배열이 '2개', ar2는 [2]개의 원소를 담은 배열이 '3개'라고 이해하였습니다. array에서 두번째 차원의 원소의 수와 포인터의 사이즈가 같아야 하는건가요??
- 미해결홍정모의 따라하며 배우는 C언어
14분경 이중포인터 질문이 있습니다
이렇게 교수님과 동일하게 567번 라인을 작성하였습니다. 하지만 제 컴파일러는 다음과 같이 에러를 출력하였습니다. 오타도 아닌 것 같은데, 왜 이렇게 warning이 발생하는지 궁금합니다. 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
8:46~9:07 배열의 사이즈? 질문있습니다
int (*pa)[3];은 "3개짜리 배열에 대한 포인터"라고 말씀해주셨고, ar1[2][3]은 "3개짜리 배열의 `배열`"이라고 말씀해 주셨습니다. 그래서 저는 "3개짜리 배열이 **2개!**인" ar1이 들어가면 배열 3개를 필요로 하는 (*pa)[3]와 사이즈가 맞지 않기 때문에 error가 날 것이라고 생각하였습니다. 하지만 교수님께서는 "원소가 3개짜리인 배열에 대한 포인터인 ar1을 담을 수 있다"라고 말씀해주셨습니다. 이 부분이 이해가 가지 않는데, 어떤 부분이 틀렸는지, 어떤 개념을 놓치고 있어서인지 여쭤보고 싶습니다. 감사합니다!
- 미해결홍정모의 따라하며 배우는 C언어
비주얼 스튜디오 질문 드립니다
안녕하세요 비주얼 스튜디오에서 제가 만든 솔루션(프로젝트)를 내보내기 하고 가져오기 하는 방법이 궁금합니다!! 예) 다른 컴퓨터에서 제가 작업한 프로젝트를 여는 방법이랑 다른 사람이 작업한 프로젝트를 제 컴퓨터에서 여는 방법이 궁금합니다!!
- 미해결홍정모의 따라하며 배우는 C언어
질문입니다
17분 에 나오는 1106 % 256 = 82 = 'R' 로 나오는 이유가 1바이트 크기인 256 으로 나눈 나머지 값을 이용해서 인트 값을 1바이트 크기로 잘라 준거 맞나요?? 그리고 교수님이 설명에서 뒤에 비트연산자 사용법 에서 비슷한 개념이 나온다고 하셨는데 그게 시프트 연산자 맞나요?? 제가 궁금해서 비쥬얼 스튜디오 코드로 이렇게 해봤는데 printf("%hhd\n", 256 >> 8); -> 출력값 1 printf("%hhd\n", 1106 >> 8); -> 출력값 4 printf("%hhd\n", 1106 / 256); -> 출력값 4 256 을 이진법으로 하면 1 0000 0000 라서 뒤에 0000 0000 이 잘리고 1 이 나오고 두번째는 1106 는 0100 0101 0010 로 뒷 부분이 잘려서 0100 의 해당 값인 4가 나오고 쉬프트 연산자 >> 는 나누기로 도 사용할수 있어서 1106 / 256 은 몫으로 4가 나온 값이 위 의 비트 연산자 로 구한 값과 동일 하게 나왔다고 생각하는데 제가 이해 한게 맞나요???
- 미해결홍정모의 따라하며 배우는 C언어
안녕하세요 putchar 질문입니다.
제가 궁금한 점은 결과물에서 마지막에 '%'가 나오는 이유와, 이를 나오지 않기 위해서 무엇을 해야하는지 입니다. 코드는 다음과 같이 짜고, my_file.txt에 문자열을 입력을 한 후 출력을 진행하였습니다. 하지만, 다음과 같이 마지막에 '%'가 함께 출력됩니다. 감사합니다.