Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 lut 2025, o 16:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 mar 2015, o 20:45 
Offline
Użytkownik

Dołączył(a): 19 sie 2014
Posty: 26
Pomógł: 1

Witam
Chce sprawdzić czy string to liczba, czyli string zamieniam na int funkcja atoi i pytanie co dalej. Jest coś takiego w c. PHP posiada gotowce do sprawdzenia ale w c nie mogę znaleźć.

Uprasza się o mniejsze niedbalstwo, czeski błąd w tytule to już zwykłe lenistwo!
rezasurmar



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 20:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zobacz np. http://www.codingunit.com/c-reference-stdlib-h-function-atoi-convert-a-string-to-an-integer
Dodajesz bibliotekę stdlib.h

------------------------ [ Dodano po: 8 minutach ]

http://cboard.cprogramming.com/cplusplus-programming/33859-how-can-i-determine-whether-string-represents-integer-not.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 21:36 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Może jakoś tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No tak, ale co ze spacjami, które mogą się zaplątać na początku albo na końcu ciągu a które atoi elegancko usuwa?
To może tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2015, o 09:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2013
Posty: 62
Lokalizacja: Częstochowa
Pomógł: 5

W przypadku atoi problem jest taki, że zwraca 0 w dwóch przypadkach - jeśli ciąg, który konwertujemy faktycznie zawiera "0", oraz gdy konwersja się nie powiedzie.
Cytuj:
The function returns the converted integral number as an int value, if successful. If no valid conversion could be performed then an zero value is returned.


Można jeszcze użyć sscanf:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Po czym sprawdzić wartość zmiennej result zwróconej przez sscanf.
Cytuj:
On success, the function returns the number of items in the argument list successfully filled.

To rozwiązanie radzi sobie ze spacjami, tj. " 5678 " zostanie rozpoznane jako 5678 (result = 1)
Błędny ciąg "afdffadf" zostanie rozpoznany (result = 0).
Niestety wadą tego podejścia jest, że ciąg "1234blabla" zostanie rozpoznany jako 1234 (result = 1)

edit.
Jesli nie interesuje Cię sama wartość, a potrzebujesz tylko informacji czy ciąg jest liczbą typu int
http://stackoverflow.com/a/9753581



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO