Probleme bei Importieren von Datensätzen
-
also ich habe jetzt folgenden string für scanf, jedoch ohne erfolg.
const char * const stream2 = "%u|%u - %u|%u -%f|%f - %u|%u || ";
beim ersten datensatz stimmen die werte noch bis zum letzen %f danach nur noch 0
bei den folgenden datensätzen kommt nur noch müll raus.
-
Die hh für char musst du schon drin lassen. Du solltest nur die Längenangaben (die Zahlen) weg lassen.
-
das hatte ich auch schon getestet also hiermit:
const char * const stream2 = "%hhu|%hhu - %hhu|%hhu -%f|%f - %hhu|%hhu || ";
geht es nicht weil die double werte nicht immer 7 bzw. 6 stellen haben? die unterscheiden siche jeweils von datensatz zu datensatz?
-
hh ist nur C99, d.h. dein Compiler muss dies unterstützen.
bei scanf für double gilt %lf und nicht %f, liest du eigentlich die gegebenen Hinweise?
Außerdem liefert scanf/sscanf einen Rückgabewert, den du auswerten solltest.
Daran kannst du erkennen, wo scanf abbrach.
-
danke für die infos hat mir geholfen
-
Wutz schrieb:
bei scanf für double gilt %lf und nicht %f, liest du eigentlich die gegebenen Hinweise?
Das bekomme ich beim MinGW 4.6.1 nicht hin. Alle anderen Testcompiler verarbeiten das. Hab ich das was übersehen? C99 ist aktiviert beim gcc. Bei den anderen Compiler geht das auch ohne explizit C99.
MfG f.-th.
-
%lf für double, %f für float bei scanf, steht so im Standard (C89).
Wenn du damit nicht klar kommst, ist das dein Verständnisproblem.
"Funktioniert bei mir", "Funktioniert auf meinem Compiler", "Funktioniert in meinem Betriebssystem" ist schlimmstes Laiengesülze und Pfuscher JW Niveau.
-
Extra für Wutz:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46908Die Aussagen: "kann gar nicht sein" steht ja in "C was auch immer" helfen einem da wenig weiter, wenn der Compiler ein Teil des Standards nicht versteht. Und das ist ja nicht ein Nischenprodukt oder?
Ausserdem heisst es bei J. Wolf, deinem Liebling: "Es ist ja noch mal gut gegangen"
-
f.-th. schrieb:
Extra für Wutz:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46908Die Aussagen: "kann gar nicht sein" steht ja in "C was auch immer" helfen einem da wenig weiter, wenn der Compiler ein Teil des Standards nicht versteht. Und das ist ja nicht ein Nischenprodukt oder?
Hast du den Bugreport mal bis zum Ende gelesen?
-
Wenn du lesen könntest, würdest du lesen, dass ich gesagt habe:
"standardgemäß ist ..."
Wenn du oder andere Leute mit ihren Compilern nicht klar kommen, ist das deine/ihre Sache.
Du implizierst, dass ich gesagt hätte, "... der gcc akzeptiert/akzeptiert nicht irgendetwas..." was schlichtweg falsch ist, was man wie gesagt, bei aufmerksamen Lesen nicht passieren würde.
-
matrix1900 schrieb:
geht es nicht weil die double werte nicht immer 7 bzw. 6 stellen haben? die unterscheiden siche jeweils von datensatz zu datensatz?
%f oder auch %lf lesen alles ein was zu eine Fließkommazahl passt. Da gibt es keinen Unterschied zu %g und %e.
Du kannst in deinem Formatstring (für scanf) auch die Leerzeichen weglassen, da diese überlesen werden.
-
f.-th. schrieb:
Ausserdem heisst es bei J. Wolf, deinem Liebling: "Es ist ja noch mal gut gegangen"
Du kennst scheinst dich bei o.g. Herrn ja gut auszukennen, evtl. bist du es gar selbst. Deine Codebeiträge bisher wären jedenfalls niveaumäßig passend.
-
DirkB schrieb:
Du kannst in deinem Formatstring (für scanf) auch die Leerzeichen weglassen, da diese überlesen werden.
Ich korrigier noch mal:
Führende Leerzeich können weggelassen werden.
Die Leerzeichen vor den '|' oder '-' (nach den Zahlen) müssen bleiben.