목록Programming Language/C (18)
SH1R0_HACKER
걍 이렇게 쓰면 됨 scanf("%d", &n); for(i=0; i>입력버퍼상태 : 132*22*3563*432*5$ 프로그램에 이런 문장들이 있다고 칩시다. scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); ... scanf("%d", &a); 문이 실행되면, 첫 문자를 검사합니다. '1'이네요? whitespace가 아니므로 여기부터 입력이 시작됩니다. 10진수로 인식할 수 있는 한 최대한 많이 버퍼에서 읽어들입니다. 1, 3, 2를 차례로 읽습니다. 그 다음에 나오는 space는 당연히, 10진수 표현에서 배제되므로 읽지 않습니다. (버퍼에 남겨집니다.) 그리고 읽어들인 수들로 실제 값을 알아내서 변수 a에 저장합니다. >>입력버퍼상태 : *22*3563*..
[코딩도장] 38.2 입력한 크기만큼 메모리를 할당하여 배열처럼 사용하기 https://dojang.io/mod/page/view.php?id=318 #define _CRT_SECURE_NO_WARNINGS #include #include // malloc, free 함수가 선언된 헤더 파일 int main() { int size; scanf("%d", &size); int *numPtr = malloc(sizeof(int) * size); // (int 크기 * 입력받은 크기)만큼 동적 메모리 할당 for (int i = 0; i < size; i++) // 입력받은 크기만큼 반복 { numPtr[i] = i; // 인덱스로 접근하여 값 할당 } for (int i = 0; i < size; i++) ..
논리연산자는 연산식의 조합이 True 냐 False 를 판단할 때 사용합니다. 1. 모두 True일 경우에만 True인 and 연산자 : && 2. 하나라도 True면 True인 or 연산자 : || 3. True는 False로, False는 True로 not 연산자 : !
먼저 예시 코드를 보자. 아래의 코드는 입력된 시험 성적에 따라 등급을 결과로 출력하는 코드이다. 여기서 시험성적이 85점이라고 가정하면 아래와 같이 코드가 읽어진다. 위에서 순서대로 코드를 읽어오다가 만족하는 조건문을 찾으면 바로 if문을 빠져나온다. 만약 else if 문을 쓰지않고 if문만 계속해서 쓰게 된다면, 이렇게 만족하는 조건문을 찾아도 다른 조건문을 하나하나 다 비교하게 된다. 그리고 마지막 else 문은 바로위에 if(69>=score && score>=60) 이 조건문이랑만 엮이게 되어 성적이 60점 이상 69점 이하가 아니면 무조건 F를 출력해버린다. 우리는 시험성적이 85점이라고 가정했으므로 저 상태에서 출력했을 때 결과는 B가 아닌 BF가 되는것이다. 결론으로 if문이 여러게 주어..
가끔 소스코드들을 보다 보면 메인문을 선언할 때 int main()으로 표기한 소스코드와 int main(void)로 표기한 소스코드를 볼 수 있습니다. 두 코드의 차이점이 궁금해서 구글링을 통해 알아본 결과, int main(int argc, char * argv[]) 위 코드가 표준이며 매개변수가 필요하지 않다면 아래와 같이 생략이 가능합니다. int main(void) 여기서 void를 생략한 것이 int main() 입니다. 여기서 void를 쓰면 명확하게 인수가 없다는 것을 알려줄 수 있습니다. 결론은 둘 다 차이가 없다고 보시면 됩니다.
코드 작성을 완료한 후 return 0;을 왜 쓰는가? https://edu.goorm.io/qna/2523
123456789 라는 숫자가 입력되었을 때 각각 한자리씩 배열에 저장되게 하는 방법은 scanf("%1d",&변수); 이걸 사용하면 된다. 예제 코드는 아래와 같다. #include int main(void) { int a[9]={0,}; //배열 전체를 0으로 초기화 for (int i=0;i