안녕하세요. 포인터에 대해 다 끝났으니, 파일을 가지고 천천히 놀아보도록 하겠습니다. 이 포스팅에서는 파일을 잘 여는 방법만 익히시면 됩니다. file_name과, mode를 넘겨주면, FILE 구조체의 포인터를 리턴합니다. 그러면 파일을 열고, 그것을 스트림과 연관을 시킨다고 링크에서는 설명을 하고 있습니다. 스트림, 버퍼. 벌써부터 어질어질해 집니다. 이에 대한 것들은 후에, 작성하도록 하겠습니다. 리턴을 하는 게 FILE 포인터인데요. 만약에 파일을 여는 것을 실패했다면, NULL 포인터를 리턴합니다. 이 처리를 잘 해주시면 좋을 듯 싶습니다. 열지도 못했는데 내용을 읽지는 못할 거니까요. 일단, 이 포스팅에서는 3개만 알고 계시면 됩니다. 그리고 뒤에 +가 붙는 경우가 있어요. 추가로 binary..
C언어 검색 결과
문자열 다룰 때, strcpy 함수를 많이 쓰곤 했습니다. 그런데, stpcpy 정도는 알아두어도 크게 손해볼 거 같지는 않았습니다. 백준의 몇몇 문자열 관련 문제들을 풀어보면서 뼈저리게 느끼기도 했고요. man 페이지를 읽어보면 공부할 만한 키워드들이 상당히 많이 나오는데요. 그것들에 대한 자세한 내용들은 하나 하나 시스템에 대해 공부하면서 파 보기로 합시다. 먼저, stpcpy는 strcpy와 하는 일이 매우 유사해 보입니다. src가 가리키는 문자열의 내용을 dest에 복사한다는 것도 같아 보이고요. 그런데, 오늘 배울 함수는 리턴 값이 its end라고 합니다. 이게 무슨 이야기인지 잘 모르겠군요. 코드를 하나 작성해 봅시다. 예제 프로그램은 위와 같습니다. 실행 결과는 어떻게 나왔을까요? 이렇게..
저번 시간에 함수 포인터에 대해서 언급을 했고, clockwise 해석법에 대해서도 간단하게 언급을 했으니, 다소 복잡한 것을 해석해 보도록 하겠습니다. C언어에는 signal 함수가 있는데요. 이것의 선언부만 간단하게 해석해 보도록 하겠습니다. 간단해 보이진 않지만요. 사실 원래는, void (*signal(int,void (*)(int)))(int); 입니다. 먼저, keyword를 찾아봅시다. signal입니다. 그리고 큰 덩어리 하나 찾아봅시다. signal에서 시계 방향으로 돌기 시작했을 때 맨 먼저 만나는 '('과 쌍을 이루는 ')'을 찾아서, 표시를 해 주었는데요. 이 부분은 안쪽에서 해석을 해 보도록 하겠습니다. 먼저, keyword인 signal에서, 오른쪽을 먼저 보니까 ()이 보였습니..
포인터를 배우시면, 가장 머리가 아픈 부분이 함수 포인터일 겁니다. 교재에서는 아마 signal이랑, qsort를 예제로 많이 들 거에요. 사실 signal은 잘 안 쓰지만요. qsort는 비교체를 넘겨줄 때 함수 포인터를 넘겨주고요. 그런데, 이것이 대체 무엇을 하는 것일까요? 어떻게 실행되는지, 자세하게 분석을 하는 것은 아마도, 어셈블리랑 같이 하면서 이야기를 할 듯 싶어요. 오늘은 예제 코드만 간단하게 이해해 보도록 하겠습니다. 17줄짜리 프로그램입니다. func라는 변수를 선언했는데요. 이것이 무엇인지만 안다면, 끝난다고 보셔도 될 듯 싶습니다. 먼저, 6번째 줄에서, void (*func)() = foo; 라고 되어 있습니다. 선언부만 잘 보시면 되는데요. 시계 방향으로 해석하겠습니다. 먼저 ..
이번 글에서는, C언어 rand 함수와 srand 함수에 대해서 알아보도록 하겠습니다. 이들에 대한 자세한 원리는 추후에 따로 알고리즘이나 이산수학 카데고리에서 다룰 기회가 있을 듯 싶습니다. 먼저, srand는 1번째 인자로 seed 값만을 받습니다. 그리고, rand 함수는 아무런 인자를 받지 않고, 그냥 (유사)난수만 리턴합니다. 사용법은 그리 복잡하지 않은 듯 싶으니, 프로그램을 한 번 실행시켜 보도록 합시다. 먼저, 시드 값을 0으로 주고, rand 함수를 10번 호출해 보았습니다. 그랬더니, 1804289383, 846930886, ... , 1189641421이 나왔음을 알 수 있어요. 프로그램을 여러 번 실행 시켜도 동일한 결과가 나왔습니다. 그것으로 미루어 보았을 때 처음 시드값에 따라서..
최근댓글