반응형
key = value 라고 지정된 문자열에서 key만을 추출하는 함수를 만드려고 한다.
(key = value 에서 value를 찾으려면 ‘=’을 찾은 후 그 이후의 문자열을 복사, 반환하면 된다. )
(존재한다는 가정 하에)
문자열, idx= 0 부터 하나씩 증가시키면서 문자열[idx]를 검사한다.
‘=’를 만나면 그동안 찾은 idx = 문자열 길이 이므로
key_finder(char *key_value, int idx)
{
if (ret[idx] == '=')
{
char * ret = (char *)malloc(sizeof(char)*(idx + 1));
ret[idx] = ;
return ret;
}
}
아직 ‘=’를 만나기 전이라면
-재귀적으로 수행,
스택에 쌓인 후 재귀가 종료되기 시작하면(= 이전까지의 문자들이 스택에 쌓여있을 것임) 그 인덱스에 해당하는 문자열을 저장.
key_finder(char *key_value, int idx)
{
if(ret[idx] == '=')
{
char * ret = (char *)malloc(sizeof(char)*(idx + 1));
ret[idx] = ;
return ret;
}
ret = key_finder(key_value, idx + 1);
ret[idx] = key_value[idx];
return ret;
}
오류 처리 - 널을 만나버렸다면 ('='을 못찾았다는 뜻이므로 return 0 (오류))
- malloc error
- NULL
- key_finder 재귀 도중 오류
key_finder(char *key_value, int idx)
{
if(key_value[idx] == NULL)
return 0;
if(key_value[idx] == '=')
{
char * ret = (char *)malloc(sizeof(char)*(idx + 1));
if(!ret)
return (0);
ret[idx] = 0;
return ret;
}
ret = key_finder(key_value, idx + 1);
if(!ret)
return (0);
ret[idx] = key_value[idx];
return ret;
}
반응형
'CS(computer science)' 카테고리의 다른 글
[linux] - 새로운 명령어 만들기 (0) | 2023.01.12 |
---|---|
[minishell] - echo 함수 구현하기 (0) | 2023.01.11 |
[linux 뽀개기] - SHLVL - 환경변수 (env) (0) | 2023.01.06 |
[linux 뽀개기] - cd 명령어 구현하기 (1) | 2023.01.05 |
[linux 뽀개기] - pwd - 명령어 구현하기 (0) | 2023.01.04 |