Hive Helsinki [42 Helsinki] (16) 썸네일형 리스트형 [Hive Helsinki / Piscine] C09 Exercise 00: libft Create your ft library. It’ll be called libft.a. A shell script called libft_creator.sh will compile source files appropriately and will create your library.Allowed Function: write 첫 번째 문제는 library인 libft를 만드는 shell script를 작성하는 문제이다. 우선 기본적으로 library 파일은 .a 확장자를 지녔으므로 우리의 목표는 .c 파일들을 활용해서 하나의 .a 파일을 만드는 것이다. 주어진 c 파일들도 모두 직접 만들어야 하지만, 앞선 프로젝트들에서 다 만들어두었던 함수들이므로 따로 언급하지 않겠다. .. [Hive Helsinki / Piscine] BSQ 극악의 난이도로 유명한 BSQ, 굳이 도전하지 않는 사람도 많았고, 성패가 딱히 합격에 영향을 미치지 않는 듯싶은 프로젝트였다. (당연하다. 아무도 통과하지 못하기 때문이다.) 그래도 계속 c 프로젝트만 하고 있기에는 c 프로젝트의 난이도가 대체로 초심자에 맞춰 형성되어 있어서 나한테는 단순 반복 같이 느껴질 때가 많았다. rush 프로젝트들을 통과하지는 못했지만 하면서 가장 재밌다고 느꼈기 때문에, bsq 시작 전에 최대한 c 진도를 합격자들과 비슷하게 맞춰두고 남은 시간을 bsq에 쏟았다. 결론부터 말하자면, 통과하지 못할 코드로 팀원까지 두 번의 긴 평가를 받게 하기는 너무 미안해서 한 번 평가를 받은 후 포기했다. 여기에 게시하는 코드는 피신 이후 내가 수정한 코드이다. 그리고 끝까지 날 .. [Hive Helsinki / Piscine] C08 C08은 전반적으로 헤더파일에 관한 내용이다. 헤더파일은 복수개의 파일을 컴파일하거나 작성할 때 같은 헤더나 선언을 여러 번 하지 않도록 도와준다. 해당 프로젝트는 헤더파일과 구조체에 대한 기초적인 이해를 가지고 풀 수 있다. 헤더파일 같은 경우 내용이 어렵지 않지만, 구조체는 처음 본다면 조금 헷갈릴 수 있는데, 사실 해당 프로젝트에서는 활용보다는 선언 정도를 하기 때문에 처음 익히기 어렵지 않을 것이다. Exercise 00: ft.h Create your ft.h file.Allowed Function: None 첫 번째 문제는 간단히 주어진 프로토타입의 함수를 포함한 헤더파일을 작성하기만 하면 된다. 다만 42에서 헤더파일을 작성할 때에 주의해야 할 점이 몇 가지 있다. 첫 번째는 #if.. [Hive Helsinki / Piscine] Rush02 마지막 rush이자 가장 악명 높은 과제 중 하나인 rush02. 결론부터 말하자면 0%로 fail을 받았다. 평가를 받다가 malloc check을 한 번 안 한 게 발견되어서 결국 fail을 했다. 이후 코드도 좀 더 깔끔하게 고쳐서 다시 완성했다. 내가 테스트한 경우들에는 모두 작동했지만, 통과한 코드가 아니고, 고치는 과정에서 42norm에 맞지 않게 고친 것도 다수 있어서 참고만 하길 바란다. <p da.. [Hive Helsinki / Piscine] C07 C07의 경우 malloc, 즉 메모리 할당과 관련된 내용으로 이루어진다. 메모리 할당은 주로 배열을 사용하고 싶지만, 배열을 선언하는 시점에 배열의 크기가 확정되어 있지 않을 때 사용한다. 관련된 자세한 내용은 아래 글을 참조하시기 바란다. 나는 C언어 공부할 때 해당 교안을 위주로 공부했는데, 잘 정리되어 있어서 완독하고 나면 피신에 나오는 문제들의 난이도가 크게 어렵지 않게 느껴진다.https://modoocode.com/98" data-og-description="모두의 코드 씹어먹는 C 언어 - 작성일 : 2010-08-03 이 글은 94347 번 읽혔습니다. 안녕하세요. 여러분. 정말 멀리 달려 온 것 같네요. 벌써 제 20 " data-og-host="modoocode.com" data-o.. [Hive Helsinki / Piscine] C06 C06의 경우 대체로 터미널로부터 입력을 받는 '프로그램'을 작성할 것을 요구한다. 따라서 이전에 요구된 프로토타입의 함수만을 포함했던 것과는 달리, 이 과제에서는 바로 실행 가능한 main 함수를 포함해야 한다. 우선 기본적으로 터미널로부터 입력받는 방법을 알아야 하는데, 이는 main 함수의 인자를 이용한다. int main(int argc, char **argv) 위와 같은 방식으로 사용되는데, int 타입의 argc는 입력받은 parameter의 개수이고, argv는 입력받은 parameter를 문자열로 저장한 것의 배열이다. argv가 two pointer인 이유는 문자열 자체가 이미 문자의 배열인데, argv는 문자열의 배열이 되어야 하기 때문이다. 만약 터미널에 아래와 같이 입력한다고 해보자.. [Hive Helsinki / Piscine] Rush01 Rush01은 주어진 조건에 따라 1, 2, 3, 4의 높이를 가진 막대를 알맞게 배치하는 문제이다. 문제를 이해하는 데까지도 좀 어렵다고 느꼈고, 풀이하는 데는 더욱 오래 걸렸다. 결국 마지막에 사소한 실수와 malloc check를 하지 않은 문제들로 인해서 fail을 받았지만, 결국 출력을 할 수 있게 만드는 데에는 성공했다. 여기서 적는 방법은 피신 이후 내가 오류나 효율성을 고려해서 코드를 수정한 내용이다. 따라서 피신에서의 형식이나 규칙에 어긋나는 부분(금지 함수를 쓰는 등의 제한을 어긴 것은 아니지만, 띄어쓰기나 인자, row 수 제한 등의 규칙은 신경 쓰지 않았다)이 있을 수 있고, 따라서 문제의 접근 방식만 참고하는 편이 좋을 것 같다. 예시 input으로 문제에 대한 설명부터 해보겠다... [Hive Helsinki / 42cursus] restrict pointer와 size_t type 42 cursus에 접어들고, 첫 번째 과제인 Libft을 수행하면서 memcpy 함수를 구현하던 중 restrict pointer와 size_t type을 처음 접하게 되었다. size_t type은 이전에도 strlen 등의 매뉴얼 등을 확인하며 본 경험이 있으나 사용해 본 적은 없고, restrict pointer는 처음 보아서 좀 더 기록해보려 한다. restrict pointer restrict 키워드는 메모리 접근을 최적화하기 위해서 사용된다. restrict 키워드가 쓰였다면 각 변수가 같은 메모리 공간이 아니라는 것을 컴파일러에게 알려주려는 것이다. 나도 이런 설명만 봐서는 대체 무슨 말인지 이해가 되지 않았다. 그래서 내가 본 memcpy 함수의 프로토타입과 함께 이야기 하려 한다. 아래.. 이전 1 2 다음