전체 글
-
[C언어] getchar()와 엔터 공백 제거 / fflush(stdin)개발/C 2020. 12. 23. 17:21
getchar()는 키보드로부터 입력받은 문자를 단 한 문자만 처리한다. 그래서 이렇게 "asdf"를 연속으로 입력하면, 첫 getchat()가 "a"를, 다음 getchar()가 "s"를 받아버린다. 그뿐인가. 엔터도 입력으로 받아버려서, "a"입력후 엔터를 치면 다음 getchar()가 이 엔터를 받아버린다. 엔터를 치기 전까지 입력을 다 받으면서, 처리를 이렇게 하다니.. -_- 이를 해결하려면 두 getchar()사이에 fflush(stdin)를 쓴다. 앞에 들어온 입력들을 flush 해 준다. 이제 의도대로(?) getchar()들이 각 입력값에서 맨앞 한문자씩만을 가져오게 되었다ㅋ
-
[C언어] 자료형 묵시적/명시적 변환 (int float double)개발/C 2020. 12. 23. 17:21
int는 4byte, float는 4byte, double은 8byte이다. 1. 형변환은 일시적이기 떄문에 연산 전후의 x, y자체의 형변환이 일어나지는 않았음을 알 수 있다. (메모리크기 그대로) 하지만 연산결과 자체에서는 형변환이 일어난다. (메모리크기 바뀜) 2. double을 int로 바꿀때는, 값이 잘려나간다. 해당 내용은 심각하므로 비주얼스튜디오에서 warning이 나온다. 3. ch=1000이 값이 -24가 나오는 것은, signed char가 char의 기본값인데 앞의 1을 보수 flag로 이해하다보니 값이 음수로 나온 것. 형변환은 위험하다, 큰 것을 작은 데다 욱여넣지 말자!!
-
[C언어] 포인터와 배열 예제개발/C 2020. 12. 23. 17:20
배열과 포인터는 같은 것. 다음 예시를 보자. 배열이름인 num이 포인터와 같은 역할을 한다는 것을 알 수 있다.
-
[C언어] 치환 암호 / 중복 없는 랜덤 rand()를 사용한 알파벳 랜덤정렬개발/C 2020. 12. 23. 17:20
애니그마는 세계2차 대전 중에 사용된 암호이다. 기계의 작동 원리는 좀 더 복잡한 것 같지만, 결과적으로 알파벳 문자 하나하나를 각기 다른 것으로 치환한다. C실습 중에 애니그마가 생각나서 만들어본 코드. 중복 없이 랜덤한 문자를 A...Z까지 매칭하는 함수를 만들어보았다. #include #include #include int main() { char anig[26]; int i, j=0, r; srand (time(NULL)); for(i=0; i
-
[C언어] math함수에서 정확한 PI값 사용하기개발/C 2020. 12. 23. 17:20
정확한 PI값이라기보다는, 라이브러리에 들어있는 PI값을 가져다 써 보자. 를 열어 보자. 626번째 줄의 M_PI가 우리가 찾는 값이다. (실망스럽게도 "완벽한" PI값은 아니다. double의 한계가 있으니 이 정도로 만족하자.) 그런데 쓰려고 하면 안 써진다. #include 만으로는 부족하다는 뜻이다. 597줄 설명대로 해 보자. #define _USE_MATH_DEFINES 를 앞에 넣어주면 다음의 상수들을 쓸 수 있다는 뜻이다. 시키는대로 #define _USE_MATH_DEFINES #include 를 순서대로 적어주면, M_PI를 사용할 수 있다. 이제 구글에 PI값을 검색하지 않아도 된다 :) math.h에 들어있는 정확한 PI값 사용하기