» »

[C] atoi() problem

[C] atoi() problem

atasmrk ::

Naletel sem na slednjo situacijo:

atoi() vrne intiger stringa. Vse v redu. Kaj pa ce je string "0"? Sicer bo funkcija vrnila 0, tako kot je treba, ampak to je za to funkcijo tudi pokazatelj napake. V mojem problemu pa nujno potrebujem to preverjanje, plus tega se z veliko verjetnostjo v stringu pojavi nicla.

Kako se resi tak problem?

64202 ::

int x;
if(sscanf(str, "%d", &x) == 1) {
  /* ok */
} else {
 /* not ok */
}
I am NaN, I am a free man!

sid_dabster ::

64202: ok, vendar se bodo CodeGuard in podoba orodja (ce jih doticni morda uporablja) pritozevala s Function Failure, ce bo prisel v sscanf string, ki ne ustreza podanemu patternu.
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)

BigWhale ::

Uporabi strtol(), ki detektira napake.

64202 ::

sid: Codeguard je potem buggy, ne bi smel tega javljat. Moral bi pa javit nepreverjanje vrednosti funkcije (kot to dela recimo lint).
I am NaN, I am a free man!

atasmrk ::

64202: hvala za namig.

sid: ne uporabljam CodeGuard-a, tako da me to ne skrbi.

Sicer pa hvala.

sid_dabster ::

@atasmrk: "ne uporabljam CodeGuard-a"

Naj tako tudi ostane 0:).
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] Razbitje stringa s pomočjo indeksov

Oddelek: Programiranje
5837 (715) Shinobi
»

Dev C++ ne zažene .exe datoteke

Oddelek: Programiranje
192472 (2131) eric_cartman
»

[C++][Naloga] Tekstovne datoteke, realna števila

Oddelek: Programiranje
254051 (3667) Gundolf
»

Kdaj uporabiti izjeme?

Oddelek: Programiranje
241699 (1580) Gundolf
»

Coding Style

Oddelek: Programiranje
433466 (2658) 64202

Več podobnih tem