/////
Search
Duplicate
🔄

Push_swap

에러처리

In case of error, you must display Error followed by a ’\n’ on the standard error. Errors include for example: some arguments aren’t integers, some arguments are bigger than an integer, and/or there are duplicates.
들어온 녀석들이 integer인지를 확인하는 동시에 숫자이면 integer 범위인지 확인하고 범위가 맞다면 들어올때마다 중복인지 체크
인자값으로 아무것도 받지 않으면 아무것도 출력을 안 하면 되지만 ""로 비어있는 입력을 하게 되면 error(checker로 확인)
숫자인지 체크 || 인티저범위인지 체크 || 중복체크
숫자인지 체크가 끝나고 숫자가 아니면 바로 에러 출력이지만 숫자라면 인티저 범위를 체크하기 때문에 인티저 범위를 체크할때는 모두가 숫자라는 보장이 됨

write으로 에러처리 할때 file descriptor 2로 주는 이유

write(1, "error", 5)랑 write(2, "error", 5)랑 뭔 차이지
fd값이 다른건 당연하고 write(2, "error", 5)로 처리하면 2> 리다이렉션을 통해서 에러만 따로 볼 수 있다
main.c 2> error.txt
Shell
복사
위와 같은 식으로 명령어를 입력하면 main.c에서 발생한 에러 내용을 error.txt에 저장된다

quick sort

궁금점

quick sort 할때 왜 pivot을 가운데로 하는 것이 유리할까?
→인덱스의 중간지점을 찾는 것이 아니라 값들 중의 중간값을 pivot으로 해야한다. 그렇게 되면 pivot을 통해 나뉘어지는 chunk들이 균형을 이룸
그럼 도대체 중간값을 어떻게 찾을건데

makefile

phony
@
명령어 쉘에 출력되는거 생략
bool ft_atoi(char **s, int *v) { int sign; int tmp; while (ft_isspace(**s)) ++(*s); sign = 1; if (**s == '+' || **s == '-') if (*((*s)++) == '-') sign = -1; if (!ft_isdigit(**s)) return (false); *v = (*((*s)++) - '0') * sign; while (ft_isdigit(**s)) { tmp = (*((*s)++) - '0'); if (sign < 0) tmp = ~(tmp) + 1; //2의 보수로 부호 변환 tmp = *v * 10 + tmp; if (overflowed(*v, tmp)) return (false); *v = tmp; } return (true); }
C
복사
Search
Library DB
연결리스트에서 동적할당 해주는 이유
연결리스트에서 동적할당 해주는 이유
Load more