본문 바로가기

분류 전체보기

(101)
minishell01 int main(int argc, char **argv, char **envp){ t_cmd_set p; char *line; ft_init(&p, envp, argv, argc); while (1) { ft_set_signals(&p); if (isatty(0)) p.input_text = readline("m1n1$hell> "); else { p.input_text = get_next_line(0); if (!p.input_text) ft_free_exit(&p, p.status_code, NULL); line = p.input_text; p.input_text = ft_strtrim(p.input_text, "\n"); if (p.input_text == NULL) ft_free_exit(&p, ..
read 함수 설명 이 코드는 while 루프 조건으로 파일 디스크립터(fd)에서 데이터를 읽어 들이며, 개행 문자(\n)가 있는지 확인하는 과정을 수행합니다.아래에서 자세히 분석하겠습니다.🔍 코드 분석while (!(newline = ft_strchr(line, '\n')) && (countread = read(fd, buf, BUFFER_SIZE)))각 부분을 나눠서 설명하면:1️⃣ ft_strchr(line, '\n')ft_strchr(line, '\n') → line 문자열에서 \n이 있는지 찾는다.개행 문자가 있다면 newline에 그 위치의 포인터를 저장하고,없다면 newline = NULL이 된다.!newline → 개행 문자가 없을 때 true.즉, newline이 NULL일 때만 루프가 계속 실행된다.2️..
get_next_line 간단 구현 이 코드 구현은 get_next_line 함수로, 파일 디스크립터(fd)에서 한 줄을 읽어오는 함수입니다. 이 함수는 파일을 한 번에 한 줄씩 읽고, 그 줄을 반환합니다. 이 함수의 주요 목적은 버퍼에서 읽어온 내용을 적절히 분리하여 하나의 문자열로 반환하는 것입니다. 각 부분을 상세히 설명하겠습니다.함수의 흐름 설명char *get_next_line(int fd){ static char buf[BUFFER_SIZE + 1]; char *line; char *newline; int countread; int to_copy; line = ft_strdup(buf); while (!(newline = ft_strchr(line, '\n')) && (countread = read(fd, buf, B..
printf 함수 간단 구현 형식 문자열(`format`)과 가변 인자(`...`)를 받아서, 형식 문자열에 지정된 대로 인자들을 출력하고, 출력된 문자의 총 길이를 반환합니다.### 함수의 구조1. **함수 시그니처**:   ```c   int ft_printf(const char *format, ...)   ```   - `const char *format`: 형식 문자열을 가리키는 포인터입니다. 이 문자열은 일반 문자와 형식 지정자(`%s`, `%d`, `%x` 등)를 포함할 수 있습니다.   - `...`: 가변 인자 리스트입니다. 형식 문자열에 따라 다양한 타입의 인자를 받을 수 있습니다.2. **변수 선언**:   ```c   int length = 0;   va_list pointer;   ```   - `length`..
mlx_get_data_addr 펑션의 사용법 `t_image *init_image(void *mlx)` 함수는 MiniLibX 라이브러리를 사용하여 새로운 이미지 객체를 초기화하는 역할을 합니다. 이 함수는 메모리에 새로운 이미지를 생성하고, 이미지의 메모리 주소와 관련된 정보를 설정합니다. ### 함수 설명 1. **메모리 할당**:    ```c    image = malloc(sizeof(t_image));    ```    - `t_image` 구조체를 위한 메모리를 할당합니다. 만약 메모리 할당에 실패하면 `NULL`을 반환합니다. 2. **이미지 생성**:    ```c    image->image = mlx_new_image(mlx, WINDOW_WIDTH, WINDOW_HEIGHT);    ```    - `mlx_new_image`..
3D 표현에서 x,y 값과 z값의 의미 `t_line *init_line(t_point start, t_point end, t_fdf *fdf)` 함수는 두 점 사이의 선을 나타내는 `t_line` 구조체를 초기화하는 역할을 합니다. 이 함수는 메모리에 새로운 `t_line` 구조체를 할당하고, 시작점과 끝점의 좌표 및 색상 정보를 설정합니다. ### 함수 설명 1. **메모리 할당**:    ```c    line = malloc(sizeof(t_line));    ```    - `t_line` 구조체를 위한 메모리를 할당합니다. 만약 메모리 할당에 실패하면 `NULL`을 반환합니다. 2. **시작점 및 끝점 설정**:    ```c    line->start.x = start.x;    line->start.y = start.y;    ..
3D 축 기준 회전 공식 이 함수는 3D 공간에서 X축을 중심으로 선(line)을 회전시키는 역할을 합니다. 함수의 각 부분을 자세히 설명하겠습니다. ## 함수 선언 ```c void rotate_x(t_line *line, double angle) ``` - 이 함수는 `t_line` 구조체 포인터와 회전 각도를 매개변수로 받습니다. - `void` 반환 타입은 함수가 직접적인 결과를 반환하지 않고, 입력된 `line` 객체를 직접 수정함을 의미합니다. ## 변수 선언 ```c t_point new_start; t_point new_end; ``` - `new_start`와 `new_end`는 회전 후 선의 새로운 시작점과 끝점을 저장하기 위한 임시 변수입니다. ## 회전 변환 회전 변환은 다음 공식을 사용합니다: - y' =..
2차원 배열을 사용한 3차원 표현방법 이 함수는 3D 공간의 점들을 표현하는 2차원 배열을 초기화합니다. 각 점은 x, y, z 좌표와 색상 정보를 가집니다. 예를 들어 설명하겠습니다:1. 구조:   - position[i][j]는 i행 j열에 위치한 점을 나타냅니다.   - width는 행의 수, depth는 열의 수입니다.2. 좌표 의미:   - x: 좌우 위치 (0은 중앙)   - y: 상하 위치 (0은 중앙)   - z: 높이 또는 깊이 (0은 기준면)3. 색상:   - color: 점의 색상 (0은 기본색, 보통 검정)예시:width = 3, depth = 4인 경우:```position[0][0] = {x:0, y:0, z:0, color:0} // 왼쪽 상단 점position[1][2] = {x:0, y:0, z:0, color..