월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
문자를 입력하면 무한 루프가 됩니다
문자를 입력하면 무한 루프가 됩니다. scanf에서 정수형은 문자 앞까지만 입력을 받는데, 실행 후, 우선 첫루프에 10을 입력하면 10secs 0mins 0hurs가 당연 출력되고, 다음 루프에 a를 입력하면 scanf는 문자까지만 입력을 받으므로 그대로 통과하고 seconds변수에 여전히 10이 남아있어 그런지 scanf에서 대기하지 않고 쭉 계속 10secs 0mins 0hurs를 출력하고 무한루프가 됩니다. 그리고 처음부터 a를 입력하면 초기화 된 seconds에 0이 있어서 인지 0secs 0mins 0hurs을 출력하고 무한루프가 됩니다. 이 현상을 생각해볼떄 seconds변수에 어떤값도 없어야 scanf를 만날때 컴퓨터는 멈추고 입력을 기다리게 되는 것 같기도 합니다. scanf의 &변수(&seconds)가 어떤 의미가 있지 않을까하는 상상을 해보았습니다. 상세 설명 부탁드립니다
- 해결됨홍정모의 따라하며 배우는 C언어
a를 입력했을때 카운트되면 안되는거 아닌가요?
(사진)
- 해결됨홍정모의 따라하며 배우는 C언어
if문 조건식안에 print함수는 ;가 필요없어도 작동되는겁니까?
(사진)
- 미해결홍정모의 따라하며 배우는 C언어
strcpy(genie.name, "Will Smith"); 에 대한 질문입니다.
안녕하세요? 강의 초반에 genie 라는 struct person 의 변수를 생성하고 genie의 name 을 설정할 때 genie.name = "Will Smith"; 라고 하니 수정할 수 있는 L-Value 가 아니라고 나오는데 이유가 무엇인가요? genie.age 나 genie.height 는 대입연산자(=)로 대입이 가능한데 name 만 함수로 입력해야 하는 이유가 궁금합니다. (struct person 구조체를 만들 때 char name[MAX]; 가 아니라 *char name; 으로 선언하면 genie.name ="Will Smith"; 가 되던데 둘의 차이도 궁금합니다)
- 미해결홍정모의 따라하며 배우는 C언어
cmd 에서 명령줄인수에 txt 파일은 어떻게 받아오나요?
프로젝트 속성 > 디버깅 경로에서 명령줄인수에 input.txt 를 받아오는 방법은 할 수 있는데, 커맨드라인에서 exe 파일을 실행할 때 제일 끝에 input.txt 나 "input.txt" 를 입력해도 텍스트 파일을 받아올 수가 없다고 나오는데 어떻게 입력을 해야 텍스트 파일을 받아올 수 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
3번째 예시 질문
3번째 예시를 시작지점 알파벳과 첫행기준 얼만큼 출력할지를 입력으로 받아서 출력하는 걸로 변형을 해봤는데요 교수님이 코딩한거랑 다르게 변수를 추가를하여 작성하였는데요. 그로인해 코드의 길이가 더 늘어난 감이 없지않은데 혹시 이런방식이 속도면에서 문제가 되는지 궁금합니다. int main() { char alphabet = 0; int number = 0, originNumber = 0; char originAlphabet; printf("%s\n", "Input Alphabet what you want to start through and how many to print"); scanf("%c %d", &alphabet, &number); originAlphabet = alphabet; originNumber = number; printf("%s\n\n", "Result is being printed......"); for (int i = 0; i < originNumber; i++) { alphabet = originAlphabet++; for (int j = 0; j < number; j++) { printf("%c ", alphabet); alphabet++; } number--; printf("\n"); } printf("%s\n", "Printing completed....."); }
- 미해결홍정모의 따라하며 배우는 C언어
#define _CRT_SECURE_NO_WARNINGS에 관해서
#define _CRT_SECURE_NO_WARNINGS를 #include <stdio.h> 이전에 쓰지 않고, 이후에 쓰면 오류가 뜨던데 왜 그런건가요?
- 미해결홍정모의 따라하며 배우는 C언어
텍스트 파일을 불러와서 거기에 있는 내용으로 여러가지를 하려고 합니다
안녕하세요. 숙제를 하면서 찾아보다가 강의가 좋은것 같아서 결재하고 듣고있습니다. 텍스트 파일을 불러와서, 텍스트파일에 들어있는 내용을 바탕으로 평균값과 합, 여러가지를 구하려고 하는데요 예를 들어 코로나 검사결과.txt 를 불러온다고 하였을때 txt 파일 안에는 포맷 형식이 sex, age, height, weight, +/-, address 이런식으로 가정하였을경우, M 28 140 50 + 서울 F 35 170 40 - 인천 등등 무수히 많은 자료가 있다고 하였을때, 시작을 어떻게 각 포맷을 지정하여 불러올수 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
고정너비 정수에 대한 질문입니다
int 타입은 하드웨어 의존 가능성이 있으므로 플랫폼에 따라 4바이트 또는 2바이트로 실행이 될 수 있으므로 이식성에 문제가 있을 수 있음을 설명하셨습니다. 그래서 플랫폼 independent하게 4바이트로 고정 될 수 있는 int32_t라는 타입이 있는 것으로 이해가 됩니다. 그러나 stdint.h에 정의되고 있는 아래 typedef에 의하면 그냥 원래 int 를 int32_t라는 이름으로 재정의하고 있을 뿐입니다. 그런데 왜 이것이 32비트로 고정이 되는지 궁급합니다. 즉, int32_t i 로 i 변수를 define 한다는 것은 int i 와 다를 바가 없는 것으로 이해가 됩니다. 아시겠지만 tydef는 구글링 한 바로는 아래와 같습니다. typedef int int32_t; The typedef is a keyword used in C programming to provide some meaningful names to the already existing variable in the C program. It behaves similarly as we define the alias for the commands. In short, we can say that this keyword is used to redefine the name of an already existing variable.
- 미해결홍정모의 따라하며 배우는 C언어
형변환 에러가 안뜨는 경우도 있나요?
강의에서 확인한 거와 마찬가지로 float으로 선언된 f의 경우 integer 로 넣을시 에러가 떠야 정상인데 제 컴파일러같은 경우에는 어떠한 에러도안뜨고 컴파일이 되버리네요.. 혹시 어떠한 이유때문에 이러는건지 알고싶습니다. visual studio 2019입니다.
- 미해결홍정모의 따라하며 배우는 C언어
overflow 경고
안녕하세요. 맥북을 사용하고 있어서, 강의에서 사용중인 vs2019가 아닌 vscode를 사용 중 입니다. 실행해보아도 오류에 안잡히는데 어떤 부분이 잘못된건가요?
- 미해결홍정모의 따라하며 배우는 C언어
강의 25분 10초 쯤 질문입니다.
안녕하세요? 강의 25분 10초 쯤의 내용에서 질문 있습니다. sizeof(int)는 4byte이고 거기에 +1을 하니까 float arr4[sizeof(int)+1] == float arr4[5] 두 표현이 같은 의미라고 하셨는데 sizeof(int)는 4바이트이고 float 자료형의 배열의 한 칸(+1을 한 칸 추가로 본다면)도 4바이트 취급을 한다면 5가 아니라 8이 되어야 할 것 같은데 왜 단위가 같지 않음에도 5가 되는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
char str2[10] = {'H', 'I'};
char str2[10] = {'H', 'I'}; 는 H, I라는 문자 2개를 배열에 넣어주었을 뿐인데 마지막에 널문자를 넣어주지 않아도 괜찮은 건가요??
- 미해결홍정모의 따라하며 배우는 C언어
포인터 관련된 사소한 궁금증입니다!
안녕하세요! 이번 강의를 듣고 실습을 해보았는데 실행 결과에 대해 의문이 생겼습니다. 코드의 14번째 줄에서 temp앞에 *을 붙인 경우와 뗀 경우의결과인데요 ptr1에 저장된 주소값도 내부적으로는 이진수이므로 temp에 저장이되고 그게 다시 ptr2에 저장이된다고 받아들였습니다. 그래서 결과적으로 ptr2가 num1을 가리키게 되었다고 생각했습니다. 그런데 출력된 형식이 코드의 14번째 줄에서 temp앞에 *을 붙인 경우와 달라서 제가 뭔가 잘못생각한것같아서 정정 부탁드려요 실제로 저처럼 코드를 짜는 경우는 없겠지만 그래도 설명 부탁드립니다! 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
최소크기인데 값의 범위에서 벗어나면 오버플로우되는 건 왜 그런가요?
char, int ...은 최소 크기가 각각 1byte, (2byte or )4 byte ...인데 자료형 데이터의 값이 -128 ~ 127, (-32,768 ~ 32,767 or) -2,147,483,648 ~ 2,147,483,647 ...을 벗어나면 overflow가 발생하는 이유가 무엇인가요? 최소 크기라면 그 이상을 넘어가는 값은 long long int로 지정해줄 필요도 없는 거 아닌가요?
- 미해결홍정모의 따라하며 배우는 C언어
1차원을 2,3차원으로 사용하는 이유
1차원 동적할당 한 것을 2,3차원처럼 사용하는 이유가 뭔가요? 밑에 사진처럼 동적할당 2번하는것과 차이가 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
swap함수의 배열에서의 주소
#include <stdio.h> #define N 8 void swap(int A[], int a, int b) { int temp; temp = A[a]; A[a] = A[b]; A[b] = temp; printf("\n%p\n", &A[0]); } int main(void) { int A[N] = { 4, 2, 8, 1, 7, 3, 9, 6 }; printf("%p", &A[0]); swap(A, 3, 5); printf("%d\n%d", A[3], A[5]); } 이 코드는 제가 짠 코드인데요, 선생님 강좌에서는 함수의 변수주소와 메인함수의 변수주소가(여기서는 배열A)다르다고 해서 포인터를 써서 해결하셨는데 제가 짠 코드는 swap된 상태로 출력이 되고 또한 swap 함수에서의 배열 A[0]주소와 메인함수에서의A[0]주소가 같게 나오네요. 왜 그런지 알려주세요.
- 미해결홍정모의 따라하며 배우는 C언어
프로토타이핑에 관한 질문입니다
강의에서 void로 선언된 함수의 경우 main함수 뒤에 선언할 경우에 제일 앞부분에 선언해야 에러가 뜨지 않는다는것을 알았는데요. int로 선언된 함수의 경우 void로 선언한 함수와 다르게 앞부분에도 선언을 안해도 에러없이 출력이 됩니다. 혹시 왜이런건지 알수 있을까요? ( int 뿐만아니라 float, long 일때도 마찬가지로 오류없이 컴파일되네요) 그리고 다른언어(C#,JAVA) 같은경우에는 void함수를 선언할때 main 함수 뒤에 선언하고 굳이 앞부분에 프로토타이핑을 안해도 자동으로 함수를 불러오던데, 이건 각 언어만의 특징이라 그런건지 아니면 C언어로부터 개선되서 이렇게 가능하게 된건지 알고싶습니다. 질문이 많네요 ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C언어
NULL을 이해한건지 알고싶습니다.
안녕하세요, 질문이 있습니다. 제가 이해한게 맞는건지 확인하고자 합니다. int* a = NULL; 을 사용한다는 것은 int b; scanf("%d", &b) if (b % 2 == 0) a = &b; 처럼 입력값에 따라 실제 메모리 공간을 할당받은 메모리주소를 가진 변수b를 조건이 true일 경우 제대로 대입이되서 사용이 가능한거고 조건이 false일 경우 그대로 NULL인 값을 포인터 변수 a가 가지고 있을때 포인터 변수 a를 이용하는 구문을 만났을때 printf("%p %d", a, *a); 이대로 실행하면 런타임 에러가 발생하기 때문에 이걸 방지하고자 if (a != NULL) printf("%p %d", a, *a); 이것처럼 조건을 걸어 제대로 값을 대입받았다면 실행이 되고 그러지 아니하면 실행이 안되고 그냥 런타임 에러 없이 넘어가기 위함 인가요? 제가 한번더 확인하고자 NULL 말고 int *a = 1; 을 한다음 if (a != 1) printf("%p %d", a, *a); 을 해도 런타임 에러없이 그냥 넘어가더라구요 그래서 NULL로 초기화 해준게 a포인터 변수를 이용하는 구문을 만났을때 그냥 적어두면 오류가 발생하니 조건의 기준을 정하기 위해 임시로 NULL을 넣은게 아닌가 생각했습니다. * 두번째 질문. * NULL을 눌러서 vcruntime.h 로 들어가서 보니 ((void *) 0) 이라고 define으로 되어 있더라구요 이 의미는 다른의미가 있나요? 아니면 0과 같나요? 실제 NULL하고, 0을 int *a 포인터 변수에 초기화를해서 %p로 출력해보니까 둘다 같은 16진수인 00000000 으로 나오더라구요. 같은건지 아니면 다른의미가 있는데 이어지는 강의에서 나오는건지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
21:34 16진수 이해 부족
출력 하면 b.ap1은 1.7400000000000P+4 와 같다고 이해하면 되는건가요? 16진수는 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 로 표현하는데 b.ap1은 왜 저런 숫자가 나오는지 잘 이해가 가질 않아요.. 머릿속이 복잡해서 질문을 제대로 한건지도 모르겠네요 ㅠ