Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
a wiec powiedzmy jest taka sytuacja mam zmienna char do niej przypisana jakas wartosc ktora powinna miec postac np:
00:30:40:50:2F:16
(mac) ale jesli bedzi nie prawidlowa np bedzie wygladala tak #00:30:40:50:2F:16 lub np 0O:30:40:50:2F:16 lub 000:30:40:50:2F:16
ma ktos moze pomysl jak sprawdzac poprawnosc zmiennej
PsS> zaczynam dopiero przygode z tym jezykiem programowania a wiec prosze o lopatologiczne wyjasnienia
Offline
Zchecia bym ci pomogl aby sie odwdzieczyc za twoja pomoc ale niestety wykracza to poza moje aktualne mozliwosci :P
Offline
a gdyby tak wyswietlic na ekranie wartosc tej zmiennej i popatrzec czy ona ma prawidlowy "wyglad" ?
cout>>"n zmienna mac (char) = "<<nazw2a zmiennej;
Offline
Ja bym to rozwiązał w ten sposób, że sprawdzałbym, co jest na kolejnych miejscach w tej zmiennej i porównywał z wzorcem. oczywiście wszystko w pentelce i na if-ach.
Offline
polecam funkcje isxdigit() z biblioteki ctype.h. sprawdza poszczegolne chare czy sa one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F. tu chyba malutka petelka wystarczy i po krzyku.
Offline
No teraz mając taką funkcje to już prosto:
#include<string.h> #include<stdio.h> #include<ctype.h> main(void) { char mac_tab[17], *mac="12:34:56:78:90:AB"; int i; strcpy(mac_tab,mac); if(strlen(mac) == 17) { for(i = 0; i < 17; i++) { if((i != 2) && (i != 5) && (i != 8) && (i != 11) && (i != 14)) { if(isxdigit(mac_tab[i]) == 0) { printf("n Nieprawidlowy znak! %d n", i); break; } } else { if(mac_tab[i] != ':') { printf("n Znak ':' w zlym miejscu! %d n", i); break; } } } } else { printf("n Zla dlugosc! n"); } return 0; }
Przerobiłem BieXi ten mój stary przykład, ale dalej nie wiem czemu tamto strstr nie działało. Jakaś tajemnica :) Możnaby też napisać funkcje która robi co powyżej, ale w zalezności czy są błedy czy nie zwraca 1 lub 0. Bo kwestia jakie to błędy chyba nie jest ważna.
Offline
char mac_tab[17], *mac="12:34:56:78:90:AB";
to napewno tylko literowka ale z tego co pamiętam to wskaźnik też musi mieć określony typ więc:
char *mac="12:34:56:78:90:AB"
Offline
Ten wskaźnik ma określony typ, no chyba można wymieniać zmienne danego typu po przecinku. Wszystko jedno czy tak jak ja napisałem, czy tak jak Ty. Wszystkie zmienne danego typu można jednak zadeklarowac w jednej linii po przecinku, tak wygodniej. Zresztą program sie kompiluje i działa więc chyba jest ok.
Pozdro
Offline
ok zwracam honor.
pozdrawiam
Offline
OKi sądze rze to przeterminowana wiadomość, ale jesli istnieje taka potrzeba sądze, że napisał bym szybszy kod niż ten powyrzej i bez tylu bibliotek.
Najprawdopodobniej jest to nie aktualne, ale co tam. gocom@o2.pl :>
Offline