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:
[color=darkblue]
#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; }
[/color]
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";
[/quote]
to napewno tylko literowka ale z tego co pamiętam to wskaźnik też musi mieć określony typ więc:
Kod:
char *mac="12:34:56:78:90:AB"
Zarejestrowany użytkownik Linuksa #361563
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
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00129 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.119.107.159' WHERE u.id=1 |
0.00067 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.119.107.159', 1732399196) |
0.00035 | SELECT * FROM punbb_online WHERE logged<1732398896 |
0.00051 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=447 AND t.moved_to IS NULL |
0.00009 | SELECT search_for, replace_with FROM punbb_censoring |
0.00194 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=447 ORDER BY p.id LIMIT 0,25 |
0.00077 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=447 |
Total query time: 0.00576 s |