본문 바로가기

C언어 in 42Seoul (라피신)

c07

00    src 크기 만큼의 포인터형 char배열을 만든 뒤 복사를 해줍니다. 문자열 배열이니 마지막에 널도 넣어주고 문자열배열 주소를 반환

#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char		*ft_strdup(char *src)
{
	int		i;
	int		j;
	char	*dest;

	j = 0;
	i = 0;
	while (src[i])
		i++;
	dest = (char *)malloc(sizeof(char) * (i + 1));
	if (!dest)
		return (NULL);
	while (src[j])
	{
		dest[j] = src[j];
		j++;
	}
	dest[j] = '\0';
	return (dest);
}
int main()
{
	char as[10]="gege";
	printf("%s\n",strdup(as));
	printf("%s\n",ft_strdup(as));

	printf("%ld\n", strlen(strdup(as)));
	return (0);
}

malloc 헤더는 stdlib.h

strdup 헤더는 string.h

 

NULL 아님 - 정상적으로 복제한 문자열 

NULL -문자열 복제가 실패하였으며, 상세한 오류 내용은 errno에 설정됩니다. ENOMEM : 문자열 복제를 위한 메모리 할당에 실패하였습니다.

출처: https://www.it-note.kr/78 [IT 개발자 Note]

 

01 min에서부터 max 크기까지 int 배열을 생성하고 그 사이 값들로 채워 나간다. 

/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_range.c                                         :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: minjeoki <minjeoki@student.42seoul.kr>     +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/03/10 04:35:24 by minjeoki          #+#    #+#             */
/*   Updated: 2021/03/10 04:52:12 by minjeoki         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int			*ft_range(int min, int max)
{
	int		*tmp;
	int		i;

	i = 0;
	if (min >= max)
		return (NULL);
	tmp = (int *)malloc(sizeof(int) * (max - min));
	while (min < max)
	{
		tmp[i] = min;
		min++;
		i++;
	}
	return (tmp);
}

int		main()
{
	int min=13;
	int max=50;
	int *array;

	array = ft_range(min, max);
	int i = 0;
	while(array[i])
	{
		printf("%d\n", array[i]);
		i++;
	}
}

 

/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_ultimate_range.c                                :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: minjeoki <minjeoki@student.42seoul.kr>     +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/03/10 04:54:58 by minjeoki          #+#    #+#             */
/*   Updated: 2021/03/10 05:27:20 by minjeoki         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int			ft_ultimate_range(int **range, int min, int max)
{
	int		*tmp;
	int		i;

	i = 0;
	if (min >= max)
		return (NULL);
	*range = (int *)malloc(sizeof(int) * (max - min));
	if (!range)
		return (-1);
	while (min < max)
	{
		tmp[i] = min;
		min++;
		i++;
	}
	return (max - min);
}

int		main()
{
	int min=13;
	int max=50;
	int *array;
	int *range[6][6];

	array = ft_ultimate_range(int *range, min, max);
	int i = 0;
	while(array[i])
	{
		printf("%d\n", array[i]);
		i++;
	}
}
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_ultimate_range.c                                :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: minjeoki <minjeoki@student.42seoul.kr>     +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/03/10 04:54:58 by minjeoki          #+#    #+#             */
/*   Updated: 2021/03/10 14:07:47 by minjeoki         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include <io.h>
#include <stdlib.h>
#include <stdio.h>

int		ft_ultimate_range(int **range, int min, int max)
{
	int i;
	int *tmp;

	i = 0;
	if (min >= max)
		return (0);
	tmp = (int *)malloc(sizeof(int) * (max - min));
	while (min < max)
	{
		tmp[i]=min;
		min++;
		i++;
	}
	if(!*range)
		return (-1);
	*range=tmp;
	return (i);
}


int		main(void)
{
	int		*range;
	int		i;

i = 0;
	printf("return : %d\n", ft_ultimate_range(&range, 40, 50));
	while (i < 55)
{
	printf("%d\n", range[i]);
		i++;
	}
	return (0);


}
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_ultimate_range.c                                :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: minjeoki <minjeoki@student.42seoul.kr>     +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/03/10 04:54:58 by minjeoki          #+#    #+#             */
/*   Updated: 2021/03/10 16:09:00 by minjeoki         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include <io.h>
#include <stdlib.h>
#include <stdio.h>

int		ft_ultimate_range(int **range, int min, int max)
{
	int	*tmp;
	int i;

	i = 0;
	if (min >= max)
		return (0);
	tmp = (int *)malloc(sizeof(int) * (max - min));
	if (!tmp)
		return (-1);
	while(min < max)
	{
		tmp[i]= min;
		min++;
		i++;
	}
	*range = tmp;
	return (i);
}
int		main(void)
{
	int		*range;
	int		i;

	i = 0;
	printf("return : %d\n", ft_ultimate_range(&range, 0, 2147483648));
	/*while (i < 50-40)
{
	printf("%d\n", range[i]);
		i++;
	}*/
	return (0);


}

min >= max 이면 리턴 영

tmp 배열 생성

제대로 tmp 생성 안되면 -1

tmp에 min부터 ++하믄서 대입 i세고 c총 갯수 리턴ㅡ

 

 

'C언어 in 42Seoul (라피신)' 카테고리의 다른 글

시험정리  (0) 2021.03.09
c05  (0) 2021.03.04
exam01대비  (0) 2021.02.26
c04  (0) 2021.02.26
c04  (0) 2021.02.26