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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2005-02-21 19:25:58

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Sprawdzanie poprawnosci w C++

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


[url=http://dug.net.pl][b]DUG[/b][/url]

Offline

 

#2  2005-02-22 22:33:37

  rogos - Moderator

rogos
Moderator
Zarejestrowany: 2005-02-12

Re: Sprawdzanie poprawnosci w C++

Zchecia bym ci pomogl aby sie odwdzieczyc za twoja pomoc ale niestety wykracza to poza moje aktualne mozliwosci :P


[img]http://img88.imageshack.us/img88/1856/imageslg0.png[/img]

Offline

 

#3  2005-02-24 14:58:52

  Paciocha - Użytkownik

Paciocha
Użytkownik
Skąd: z ulicy Ogrodowej
Zarejestrowany: 2004-05-08

Re: Sprawdzanie poprawnosci w C++

a gdyby tak wyswietlic na ekranie wartosc tej zmiennej i popatrzec czy ona ma prawidlowy "wyglad" ?
cout>>"n zmienna mac (char) = "<<nazw2a zmiennej;


No i nic nie zadekowaliśmy
Asus EeePC 1000H
analfabetyzm wsteczny
"Strzępy zbłąkanych wspomnień scementowanych śmiercią" - [b]OMamo[/b]

Offline

 

#4  2005-02-24 15:38:57

  Kowall_ptk - wieczny student

Kowall_ptk
wieczny student
Skąd: z nienacka :)
Zarejestrowany: 2005-02-17

Re: Sprawdzanie poprawnosci w C++

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.


W Linuksie się da, tylko trzeba wiedzieć jak!

Offline

 

#5  2005-02-24 19:47:17

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: Sprawdzanie poprawnosci w C++

Tak wiem tylko C jest ubogie w sprawdzanie poprawnosci ciagow przynajmniej troche to bardziej zagmatwane jest niz w innych jezykach :]


[url=http://dug.net.pl][b]DUG[/b][/url]

Offline

 

#6  2005-02-25 09:34:45

  rybek - Członek DUG

rybek
Członek DUG
Zarejestrowany: 2004-04-20

Re: Sprawdzanie poprawnosci w C++

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.


Linux Registered User: #348830

In a World without Walls and Fences,
who needs Windows and Gates?

Offline

 

#7  2005-02-25 16:08:31

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Sprawdzanie poprawnosci w C++

No teraz mając taką funkcje to już prosto:
[color=darkblue]

Kod:

#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

 

#8  2005-02-25 23:27:17

  BaB - Członek DUG

BaB
Członek DUG
Skąd: Krapkowice
Zarejestrowany: 2004-09-09

Re: Sprawdzanie poprawnosci w C++


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

 

#9  2005-02-26 12:16:16

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Sprawdzanie poprawnosci w C++

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

 

#10  2005-02-27 00:49:51

  BaB - Członek DUG

BaB
Członek DUG
Skąd: Krapkowice
Zarejestrowany: 2004-09-09

Re: Sprawdzanie poprawnosci w C++

ok zwracam honor.

pozdrawiam


Zarejestrowany użytkownik Linuksa #361563

Offline

 

#11  2005-11-05 21:19:04

  gocom - Nowy użytkownik

gocom
Nowy użytkownik
Zarejestrowany: 2005-11-05

Re: Sprawdzanie poprawnosci w C++

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

 

#12  2005-11-12 19:32:46

  kali - Członek DUG

kali
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2005-06-19
Serwis

Re: Sprawdzanie poprawnosci w C++

Ja widzę wykorzystanie tylko jednej biblioteki - libc ;)


Intelligence is like a river: the deeper it is, the less noise it makes

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.008 seconds, 9 queries executed ]

Informacje debugowania

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