묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
scanf()함수에 대한 반환값에 대한 질문
status = scanf("%d", &num);scanf()함수에 대한 반환값이란, 포맷형식에 알맞는 입력이 들어온 개수라고 이해했습니다.따라서, q 를 입력했을 때 형식에 맞지 않는 값이기 때문에 0을 반환한다는 것은 이해했습니다. (정수가 아니기 때문)다만 1 12 를 입력했을 때, 왜 정수1과 12로 입력을 받는지 이해가 가지 않습니다. 또, 정수 2개를 입력했기 때문에 반환값이 '2'가 되야하는 것이 아닌지 궁금합니다.(1 12 enter) -> (q enter)sum = 13 #include <stdio.h> int main() { int num, sum = 0; int status; printf("Enter an integer(q to quit) : "); status = scanf("%d", &num); // return value of scanf() while (status == 1) // equailty operator { sum += num; printf("Enter next integer(q to quit) : "); status = scanf("%d", &num); } printf("Sum = %d", sum); }
-
미해결홍정모의 따라하며 배우는 C언어
7.8 문제 질문입니다!
#define CRTSECURE_NO_WARNINGS#include <stdio.h>#define wjd '.'int main(){ char ch; int count = 0; int word = 1; int line = 1; printf("Enter text : \n"); while ((ch = getchar()) != wjd) { if (ch != ' ') { ++count; } else if (ch == ' ') { ++word; } else if (ch == '\n') { ++line; } } printf("Chara = %d, Words = %d, Lines = %d", count, word, line); return 0;} 제 코드는 제대로 실행이 안되던데 코드에 문제가있나요?
-
미해결홍정모의 따라하며 배우는 C언어
15.11 비트필드의 패딩
int main(){ struct { bool member1 : 1; bool member2 : 1; unsigned long long : 0; }none; printf("%zu bytes", sizeof(none)); return 0;} 해당 코드를 통해 강의에서와 같이 16bytes가 출력 되는지 확인해봤습니다. 그러나 16bytes가 아닌 8bytes가 출력되더군요. 이유를 알 수 있을까요?
-
해결됨독하게 되새기는 C 프로그래밍
강의 내용이 C++에도 동일하게 적용되는 내용일까요?
??
-
해결됨IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
입력함수 출력함수 관련
안녕하세요 좋은 강의 감사합니다.수업 중 코드 작성 부분을 보면 #include <iostream>을 하지만입력 함수로는 scanf 출력 함수로는 printf 를 사용하십니다.혹시 왜 그런지 이유를 알 수 있을까요?C++로 작성한다면 cin, cout 등이 있음에도 왜 C에서 사용하는 입출력 스트림을 사용하는지 궁금합니다.
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
pwm 주기 강의 질문드립니다.
PWM 3번째 강의 10분 39초 내용 질문 드려봐요~ARR 대신 프리스케일러를 변경하여 PWM을 바꾸는 내용이 이해가 잘 안되는데요. TIM2->CCR1 = ARR레지스터 값 / 2를 ARR값이 바뀌지 않는다고 지우셨는데 while문 전에 초기화에서는 ARR /2를 CCR레지스터에 설정 해줘야하지않나요?그래야 50% 토글이 될 것 같아서요.추가적으로 CubeMX에서 PWM 설정을 할 때 Internal clock을 선택해주는데내부 클락은 정확도가 떨어진다고 들었는데 Internal clock 으로밖에 못하는건가요?아니면 PWM 정확도와 내부 클락 선택 여부와는 관계가 없는건가요??감사합니다~
-
미해결홍정모의 따라하며 배우는 C언어
<10.11 질문> 배열이 함수에 들어갔을 때
10.11 강의의 11번째줄의 함수를 예로 들어함수의 arguments 정의할때 들어가는 배열을 입력하면 해당 배열의 포인터의 값이 들어가고함수에서 배열에 val 값을 더해줄 때는 배열의 포인터에 val 값을 더해준다고 표현해주셨는데 계산된 결과는 배열의 포인터의 dereferencing된 값에 val값을 더해준 것이였습니다.저는 포인터 연산이 되어 해당 배열 값에 val*(자료형의 크기 값이) 더해질 줄 알았습니다.함수의 arguments에서 배열을 포인터로 정의하고 함수 내부에서 배열을 쓸 때 포인터값과 dereferencing된 값(즉, 배열의 값)이 어떻게 구분되는건가요??
-
미해결홍정모의 따라하며 배우는 C언어
수업 소스코드 제공은 안해주나요?
빠르게 C 개념을 학습해야 하는 입장에서 매번 수업 소스 코드를 치기도 번거롭네요.단순히 개념만을 알기 위한 학습자를 위해서 수업에 사용한 소스 코드를 따로 올려주셨으면 합니다.어떤 강의는 소스 코드만 60~80줄이 되서 매번 강의 듣다가 정지하고 코드 치고강의 듣고 정지하고 소스코드 치고 무한 반복입니다.소스 코드쳐도 중간에 매번 매번 소스 코드를 바꿨다가 저리 바꿨다가 하는 경우가너무나 많아서 강의가 20분 짜리면 코드 치느라 10분 이상을 추가로 더 잡아먹습니다.제공되기 힘들다면 그 이유를 알려주시면 감사하겠습니다.
-
미해결홍정모의 따라하며 배우는 C언어
7.2강 대소문자 변환 문제 질문
대소문자 변환문제 while문안의 코드가while ((ch=getchar()) != '\n') { if (ch >= 'a' && ch <= 'z') ch -= 'a' - 'A'; else if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A'; putchar(ch); }로 하면 작성이 잘되고 while ((ch=getchar()) != '\n') { if (ch >= 'a' && ch <= 'z') ch -= 'a' - 'A'; if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A'; putchar(ch); }밑의 else if를 if로 작성하면 소문자가 대문자로 변환이 안되는데 , 왜 위의 if문이 작동이 안되는걸까요? 이해가 잘 가지 않습니다..ㅠ
-
미해결홍정모의 따라하며 배우는 C언어
scanf 무시
int main() { char t = 0; int red; printf("enter char : "); red = scanf("%c", &t); while (red==1) { printf("OK\n"); printf("enter next char : "); red = scanf("%c", &t); } printf("END\n"); return 0; } q를 입력했을 때 생각한 결과는enter char : qOKenter next char :이건데while문 안에 있는 scanf가 입력을 한번 건너뛰더라고요. q를 한번 입력했더니 결과로enter char : qOKenter next char : OKenter next char :이렇게 나왔습니다 왜 입력을 건너뛴건가요??
-
미해결홍정모의 따라하며 배우는 C언어
putchar() getchar()
char ch; ch = getchar(); while (ch != '\n') { putchar (ch); ch = getchar (); } putchar (ch); 위쪽에 있는 ch = getchar();를 통해 qwer의 문자를 입력 받았다고 하면 putchar()에서 한문자씩 출력이 되서 처음에는 q값이 출력이 되면그 다음 코드인 ch = getchar();를 만나는데 여기서 다시 ch의 값을 다시 입력해줘달라는 코드 아닌가요? 처음 ch = getchar();에서는 입력을 받았는데 왜 while문 안에있는 ch = getchar();에서는 입력을 다시 안하는 건가요??
-
미해결홍정모의 따라하며 배우는 C언어
while(getchars() != '\n')continue;
scanf("%c %d %d", c, rows, cols)while(getchars() != '\n')continue; 에서 의문이 드는 점은 scanf로 입력을 받고 while문 안에있는 putchar에서 입력을 한번 더 받아야 하는거 아닌가요?
-
미해결홍정모의 따라하며 배우는 C언어
7.2강 25분경 마지막 문제 질문입니다!
대소문자 교환 문제에서 while ((ch = getchar()) != '\n') { if (ch >= 'A' && ch <= 'Z') ch += 'a'-'A'; else if (ch >= 'a' && ch <= 'z') ch -= 'a'-'A'; putchar(ch); }라는 코드에서 밑부분에 else if 를 사용하면 정상 작동이 되는데 else if 가 아닌 그냥 if를 사용하면 소문자는 잘 바뀌는데 대문자가 소문자로 변하질 않네요... 이유가 뭘까요?ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C언어
getchar()관련 자료형 질문
char get_first_char(void){ int ch; ch = getchar(); while (getchar() != '\n') continue; return ch;}이 코드에서 getchar()이 반환하는 자료형은 int이고 return 값으로는 char값인 것에 대해 궁금했는데요, ch = getchar(); 이 부분에서 getchar()이 입력받은 문자의 아스키 코드(int)를 반환하고 이를 return ch; 에서 ch가 입력받은 아스키코드에 대응하는 문자 char자료형으로 return한다고 생각하는데 맞나요?
-
미해결홍정모의 따라하며 배우는 C언어
터미널 관련 질문이 있습니다
Mac OS 에서 Visual Studio Code를 통해 c언어를 공부하고 있습니다. 기본 세팅은 다 맞췄는데 Run code를 하게 되면 항상 터미널에 결과가 나온 다음 사진처럼 %가 붙어서 나옵니다...이유가 뭔지 알 수 있을까요??
-
해결됨IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
강의자료
안녕하세요. 제가 못 찾은 것일 수도 있지만 '그래프와 탐색 알고리즘' 부분의 강의자료가 보이지 않아서 혹시 업로드해 주실 수 있는지 문의드립니다.
-
미해결홍정모의 따라하며 배우는 C언어
14.5 구조체 dot 선언 오류
구조체 선언할 때, dot을 사용해서 선언하면 아래와 같이 오류가 납니다!주석된 부분에서 오류가 나타나는 이유를 알고 싶습니다!! --------------------------------------------------------------------------------------------------#define CRT_SECURE_NO_WARNINGS#include <stdio.h>#define LEN 41struct names { char given[LEN]; char family[LEN];};struct reservation { struct names guest; struct names host; char food[LEN]; char place[LEN]; int year; int month; int day; int hours; int minutes;};int main(void){ //struct reservation res { // .guest = { "Nick", "Carraway" }, // .host = { "Jay", "Gatsby" }, // .place = { "the Gatsby mansion" }, // .food = { "Escargot" }, // .year = 2022, // .month = 4, // .day=10, // .hours = 18, // .minutes=30 //}; struct reservation res { { "Nick", "Carraway" }, { "Jay", "Gatsby" }, { "Escargot" }, { "the Gatsby mansion" }, 2022, 4, 10, 18, 30 }; printf("\Dear %s %s \n\I would like to serve you %s.\n\Please visit the Gatsby mansion on %d/%d/%d at %d:%d.\n\Sincerely, %s %s\n", res.guest.given, res.guest.family, res.food, res.day, res.month, res.year, res.hours, res.minutes, res.host.given, res.host.family); return 0;}
-
미해결홍정모의 따라하며 배우는 C언어
getchar() , 버퍼 질문
while (1) { printf("Current count is %d. Continue? (y/n)\n", count); int c = getchar(); if (c == 'n') break; else if (c == 'y') { while (getchar() != '\n') continue; count++; }이 코드에서 int c = getchar();에서 입력을 받고 버퍼에 저장된 후while (getchar() != '\n') continue; 이 코드를 통해 버퍼에 있는 문자가 하나 씩 반환 되면서 버퍼가 비워지고 다시 int c = getchar(); 을 통해 입력을 받는다고 이해했습니다. 우선 이 과정이 맞게 이해한 건지 궁금합니다. 그리고 또 궁금한 것은 하나의 프로그램에서 버퍼는 오직 하나만 존재하는 것인가요?
-
미해결홍정모의 따라하며 배우는 C언어
3.6 정수의 오버플로우 강의 중 _itoa 함수 오류
안녕하세요 선생님!강의를 따라하던 도중 itoa 함수에 오류가 떠서 질문드립니다.분명 선생님과 똑같이 친 것 같은데 왜 오류가 날까요??뭐가 문제일까요...????어떻게든 고쳐보려고 오류 나온 문구를 구글링 해보니까 itoa함수가 표준함수가 아니라서 오류가 난다는데...ㅜㅜ솔루션 보니깐 그냥 sprintf라는 함수를 사용하라 하더라구요.. 아니면 itoa 함수를 직접 정의하라던데 아직 걸음마 걷는 입장에서는 그 방법이 도저히 이해가 안가서..해결책이 궁금합니다ㅜ
-
미해결홍정모의 따라하며 배우는 C언어
vs code gcc
비주얼 스튜디오 코드 터미널에 gcc 입력하면 저렇게 뜨는데 해결방법이 있을까요...?