CS(computer science)

[minishell] - echo 함수 구현하기

ebang 2023. 1. 11. 23:00
반응형

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);
}
반응형