반응형
echo
-n option 까지 작동하는 함수 구현하기
아래와 같은 경우의 출력예시를 살펴보면,
-n 옵션이 있을 때 개행없이 출력한다.
1. 이때 ""안에 있는 경우에는 문자열로 취급하고,
-nnnnn 같은 경우 옵션으로 인식한다.
2. 또한, -nnna 같이 옵션이 아닌 문자가 끼어있으면 그냥 문자열로 취급한다.
3. 한번 문자열을 인식하면 그 이후에 적힌 -n 같은 옵션 형식도 모두 문자열로 취급한다.
4. 환경변수로 -n이 등록되어있다면 역시 옵션으로 인식한다.
구현한 코드는 다음과 같다.
#include "../inc/minish.h"
int ft_find_option(char *argv)
{
int i;
int cnt;
i = 1;
cnt = 0;
if (argv[0] != '-')
return (0);
while (argv[i] && argv[i] == 'n')
{
cnt++;
i++;
}
if (argv[i])
return (0);
return (cnt);
}
void ft_print_newline(int flag)
{
if (!flag)
printf("\n");
}
void print_with_option(int start, int *flag, char *argv)
{
if (start)
*flag = 1;
else
printf("%s", argv);
}
int ft_echo(int argc, char **argv)
{
int i;
int flag;
int start;
i = 0;
flag = 0;
start = 1;
while (++i < argc)
{
if (ft_find_option(argv[i]))
print_with_option(start, &flag, argv[i]);
else
{
printf("%s", argv[i]);
if (i < argc -1)
printf(" ");
start = 0;
}
}
ft_print_newline(flag);
return (0);
}
반응형
'CS(computer science)' 카테고리의 다른 글
[minishell] - setenv 함수 구현하기 (0) | 2023.01.13 |
---|---|
[linux] - 새로운 명령어 만들기 (0) | 2023.01.12 |
[minishell] - 환경변수 파싱하기, 재귀함수 이용한 문자열 추출함수 만들기 (0) | 2023.01.10 |
[linux 뽀개기] - SHLVL - 환경변수 (env) (0) | 2023.01.06 |
[linux 뽀개기] - cd 명령어 구현하기 (1) | 2023.01.05 |