개발 일지/프로그래밍 언어(Java, C, SQL)
[혼공C] string.h 헤더파일 내장 함수 구현(strlen, strncpy, strncat, strcpy)
jayoon
2021. 10. 9. 01:53
문제를 풀면서 함수를 살펴 보겠습니다.
<문제>
키보드로 입력한 단어의 길이가 5자를 넘는 경우 6자부터 별(*)을 출력하는 프로그램을 작성합니다. 단어의 최대 길이는 15자로 제한합니다. (실행창에 출력되는 결과는 제가 작성한 main 함수를 참고해주세요)
#include <stdio.h>
int ft_strlen(char *str)
{
int size;
size = 0;
while (*str != '\0')
{
size++;
str++;
}
return (size);
}
char *ft_strncpy(char *dest, char *src, unsigned int size)
{
char *po;
int count;
count = 0;
po = dest;
while (*src != '\0' && size > count)
{
*dest++ = *src++;
count++;
}
return (po);
}
char *ft_strncat(char *dest, char *src, unsigned int size)
{
char *po;
unsigned int count;
count = 0;
po = dest;
while (*dest != '\0')
{
dest++;
}
while (*src != '\0' && size > count)
{
*dest++ = *src++;
count++;
}
*dest = '\0';
return (po);
}
char *ft_strcpy(char *dest, char *src)
{
char *po;
po = dest;
while (*src != '\0')
{
*dest++ = *src++;
}
*dest = '\0';
return (po);
}
int main(void)
{
char str[15];
char res[15];
char *star = "**********";
int size;
printf("input : ");
scanf("%s", str);
size = ft_strlen(str);
if (size > 5)
{
ft_strncpy(res, str, 5);
res[5] = '\0';
ft_strncat(res, star, size - 5);
}
else
ft_strcpy(res, str);
printf("not changed words : %s, changed words : %s\n", str, res);
return 0;
}