Witam
Mam takie zadanie
Napisz swoje wersje funkcji strlen, atoi oraz atof o następujących prototypach:
unsigned int my_strlen(const char tab[]);
int my_atoi(const char tab[]);
float my_atof(const char tab[]);
W przypadku kiedy konwersja nie jest możliwa, funkcje my_atoi i my_atof mają zwrócić wartość 0.
Napisz program, który pobierze od użytkownika ciąg znaków (nie więcej niż 15). Następnie korzystając z powyższych funkcji policzy i wypisze w oddzielnych liniach długość wprowadzonego ciągu, wynik jego konwersji na typ int i float (wartość typu float ma być wyświetlona z dokładnością 4 miejsc po przecinku).
Uwaga: W programie nie można korzystać z bibliotek stdlib i string oraz z funkcji z rodziny scanf (oprócz funkcji scanf).
Przykładowe wejście:
podaj liczbe: -81.15570695872059
Przykładowe wyjście:
15
-81
-81.1557
Przed rozpoczęciem pisania części main napisałem 3 funkcje, jednak przy wypisaniu main, zdałem sobie sprawę że nie jestem pewnym czy mogę tak wprowadzić dane, oraz czy moje i dostanie poprawną wartość, w trakcie kompilacji dostaje zawsze 0, możliwe że źle wychodzę z funkcji. Proszę o informacje o wczytywanie danych ewentualnie wskazówkę co poprawić w funkcjach, nie chce (na razie) gotowców
#include <stdio.h>
unsigned int my_strlen(const char tab[])
{
int i = 0;
do {
if (tab[i] == '-' || tab[i] == ',' || (tab[i] >= '0' && tab[i] <= '9')) {
i++;
}
else if (tab[i] == EOF) {
break;
}
else {
return 0;
}
} while (tab[i] != EOF);
return i;
}
int my_atoi(const char tab[])
{
int i = 0;
do {
if (tab[i] != ',') {
printf("%c", tab[i]);
i++;
}
} while (tab[i] != ',');
}
float my_atof(const char tab[])
{
int i = 0;
int k = 0;
int n = 0;
do {
if (tab[i] != ',' && k == 0) {
printf("%c", tab[i]);
i++;
}
else {
int k = 1;
printf("%c", tab[i]);
}
if (tab[i] != ',' && k == 1) {
printf("%c", tab[i]);
i++;
n++;
if (n == 4) {
return 0;
}
}
} while (tab[i] != EOF);
return 0;
}
int main(void)
{
int i = 0;
char tab[15];
printf("podaj liczbe: ");
scanf("%15[^\n]", tab);
i = my_strlen(tab);
if (i >= 15) {
i = 15;
printf("%i\n", i);
}
else
printf("%i", i);
return 0;
}