PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : betr. convertieren von string to long long



nomad
13-06-2005, 15:28
betr: string to long long (1)

hi leute

habe aus einer mysql_abfrage (c_api) einen string namens Timestamp (14-stellig)
soviel ich weiss ist der long long int.
moechte nun diesen string "20050612122230"
in eine zahl convertieren.
mein c_buch beschaeftigt sich nur mit string to long mittels

char **endp;
mysqlTowerDatas[r].towerTimeStamp = strtoul(row[t],endp,10);
ergebnis:
printf("TimeStamp: %ld\n",mysqlTowerDatas[2].towerTimeStamp);
TimeStamp: 0

koenntet ihr mir da mal helfen??
mfg nomad

locus vivendi
13-06-2005, 16:11
Wo ist das Problem? Steht in row[t] wirklich der von dir genannte String drin? Vermutlich nicht. Poste doch mal ein komplettes Beispiel, welches den Fehler verdeutlicht, das würde helfen, herauszufinden was nicht läuft.

Achso, du initialisierst doch *sicherlich* "endp", bevor du strtoul aufrufst, oder?!?

nomad
14-06-2005, 08:27
betr: string to long long (2)
hi,
vielen dank fuer deine antwort. also:

1. in row[t] steht string drinn: 24 20050612122230 52 58 135 1.000 0.100 0.100
also: 20050612122230 = timestamp

2. zitat: du initialisierst doch *sicherlich* "endp", bevor du strtoul aufrufst, oder?!?

== leider nein. hab's gemaess einem c-buch versucht
gem.buch aufruf: long strtoul(const char *s. char **endp, int base)
beispiel aus buch:
char *buf = "2.0e10";
while (*buf)
{
printf("%ld\n"",strtoul(buf,&buf,0); ergebnis: 20000000000
}

zuweisung waere doch dann &buf = char **endp oder ??

mein codeschnipsel muesste dann so aussehen:

== mysqlTowerDatas[r].towerTimeStamp = strtoul(row[t],&row[t],10);

hab unterdessen -mysqlTowerDatas[r].towerTimeStamp- von long long auf char *....... gesetzt.
es wuerde mich aber sehr interessieren wie man aus den string eine zahl konvertiert.

waere um eine antwort sehr froh
mfg nomad