Я пытаюсь создать свою личную функцию atoi, но я не работаю должным образом. Я не знаю почему.Почему моя функция atoi не работает?
void ft_putchar(char c)
{
write(1, &c, 1);
}
int ft_atoi(const char *str)
{
int i;
i = 0;
while (str[i] == 9 || str[i] == 32 || str[i] == 43 || str[i] == 45)
i++;
while (str[i] > 48 && str[i] < 57)
{
ft_putchar(str[i]);
i++;
}
return (0);
}
int main(void)
{
printf("%d", atoi(" 2794ffafsaasf"));
printf("\n%d",ft_atoi(" 2794fsffsf"));
return(0);
}
Я вроде как работает, но это не так. Это дает мне странный результат, когда он даже игнорирует «\ n». В результате он дает мне это.
272794 and a new line.
только моя функция дает мне только номер 27
.
EDIT:
Я создал новую программу. Но это все еще не работает. Он просто не может видеть цифры.
int ft_atoi(const char *str)
{
int i;
int n;
i = 0;
while (str[i] == '\t' || str[i] == ' ' || str[i] == '+' || str[i] == '-')
++i;
n = i;
while (str[n] >= '0' && str[n] <= '9')
{
++n;
}
return(str[n]);
}
все я вижу ваша функция возврат 0 ..? – yano
Отладка по строкам вы легко увидите свою ошибку в условиях IF. Возьмите отладчик. –
Вы прошли через это с помощью отладчика? Кроме того, он считал очень плохой практикой использовать 9,48, .... say '\ t', '0' и т. Д. Используйте тот факт, что '' дает вам числовое значение этого символа, это упрощает код read –
pm100