#include <stdio.h>
#include <unistd.h>
int ft_str_is_printable(char *str)
{
int i;
int cnt;
if (str[0] == '\\0')
{
cnt = 1;
}
i = 0;
while (str[i] != '\\0')
{
if (str[i] >= 32 && str[i] <= 127)
{
cnt = 1;
}
else
{
cnt = 0;
}
i++;
}
return (cnt);
}
int main() {
char a[] = "\\t";
char b[] = "HELLo";
printf("%d", ft_str_is_printable(a));
printf("%c", '\\n');
printf("%d", ft_str_is_printable(b));
return 0;
}
기계채점에서 KO를 당했는데, 알고보니 printable한 아스키 코드 값에 127도 포함이 되어 있었다.
근데 어떤 블로그에서는 다르게 쓴 거 같았는데, 블로그를 함부로 믿으면 안되겠다.
[ascii] printable / unprintable char
#include <unistd.h>
int ft_strlen(char *str)
{
int count;
count = 0;
while (str[count] != '\\0')
{
count++;
}
return (count);
}
int ft_str_is_printable(char *str)
{
int i;
int cnt;
if (ft_strlen(str) == 0)
{
cnt = 1;
}
i = 0;
while (str[i] != '\\0')
{
if (str[i] >= 32 && str[i] <= 126)
{
cnt = 1;
}
else
{
cnt = 0;
break ;
}
i++;
}
return (cnt);
}
알고보니 break문을 넣지 않아서 틀렸다. ;;