원래 코드
#include <stdio.h>
#include <unistd.h>
int ft_str_is_numeric(char *str)
{
int i;
int cnt;
i = 0;
while (str[i] != '\\0')
{
if (str[i] >= '0' && str[i] <= '9')
{
cnt = 1;
}
else
{
cnt = 0;
break ;
}
i++;
}
return (cnt);
}
int main() {
char a[] = "0123456789";
char b[] = "0l2E456789";
printf("%d", ft_str_is_numeric(a));
printf("%c", '\\n');
printf("%d", ft_str_is_numeric(b));
return 0;
}
수정한 코드
이것도 문자열 str이 비어있을 때의 예외처리를 하지 않아 오답이어서 코드를 수정했다.
#include <unistd.h>
int ft_strlen(char *str)
{
int count;
count = 0;
while (str[count] != '\\n')
{
count++;
}
return (count);
}
int ft_str_is_numeric(char *str)
{
int i;
int cnt;
i = 0;
if (ft_strlen(str) == 0)
cnt = 1;
while (str[i] != '\\0')
{
if (str[i] >= '0' && str[i] <= '9')
{
cnt = 1;
}
else
{
cnt = 0;
break ;
}
i++;
}
return (cnt);
}