Zeichen als integer auslesen
-
CaPGeti schrieb:
/* ... */
Als Beispiel....
atoi( )
ist nicht Standard C. Was hat das mit der Frage zu tun?Alien_vs_Nemo schrieb:
wie kann ich ein Zeichen als Integer aus einer Datei auslesen [...]
#include <stdlib.h> #include <stdio.h> int main(){ FILE *file = fopen( "test.txt", "r" ); int value = 0; if( !file ) { fputs( "The input file couldn't be opened!\n", stderr ); return EXIT_FAILURE; } value = fgetc( file ); fclose( file ); }
Alien_vs_Nemo schrieb:
[...] ohne das es zu einer Compilerwarnung kommt?
Wie machst Du's denn, und welche Warnung bekommst du? (Glaskugel such'...)
greetz, Swordfish
BTW: War das nicht "Alien vs. Predator"?
-
CaPGeti schrieb:
char f[2] = {"13"};
ist auch totaler Murks. Wo ist der Platz für das '\0'?
-
ja sorry, aber es würde ja nicht gesagt, das das std c sein muss.
Außerdem Funktioniert das auch so...@feigling
dann halt char f[3] = {"13"};(verschrieben)
-
Swordfish schrieb:
atoi( )
ist nicht Standard C.Laut ISO/IEC 9899:1999 7.20.1.2 schon
-
das hat unser fisch wohl mit 'itoa()' verwechselt.
-
also ich mach es im Moment wie swordfish und bekomme unter Windows die Warnung "conversion from 'int ' to 'char ', possible loss of data"
Ja das war alien vs. predator
aber ich mag lieber sushi ;o)
-
CaPGeti schrieb:
ja sorry, aber es würde ja nicht gesagt, das das std c sein muss.
auch unter der Voraussetzung *nicht* std c zu sein, *muss* ein C-String \0-terminierend sein (unter anderem, weil atoi ein \0-terminierendes String erwartet und "13" bereits \0-terminierend ist)
CaPGeti schrieb:
Außerdem Funktioniert das auch so...
super! "es ist falsch, läuft aber trotzdem, was kümmert mich den Rest", ich hasse die Einstellung bei Programmierern
. Es ist Zufall, dass es läuft. Das Programm könnte genauso mit einem segfault beenden.
-
Alien_vs_Nemo schrieb:
also ich mach es im Moment wie swordfish und bekomme unter Windows die Warnung "conversion from 'int ' to 'char ', possible loss of data"
Vermutlich hast du nen char anstatt nen int deklariert.
Machma lieber nochmal gucki guck.
-
Vermutlich hast du nen char anstatt nen int deklariert.
Machma lieber nochmal gucki guck.da brauch ich nich "gucki guck" machen ich weiß das fgetc wie es als suffix ja mitgegeben wurde ein c -> char liefert...
EDIT:
wobei ich gerade sehe das es ein Integer liefern soll...super! "es ist falsch, läuft aber trotzdem, was kümmert mich den Rest", ich hasse die Einstellung bei Programmierern
also nich aus dem Grund das du es hasst aber weil es ne scheiß Einstellung ist so zu Programmieren habe ich ja die Frage wie ich es als Integer und nicht als als Char auslesen kann und dann über ein cast als Integer zu quälen
also kann mir irgendwer helfen oder diskutiert ihr weiter drüber ob ein String \0 terminierend ist oder nicht?
-
Alien_vs_Nemo schrieb:
Vermutlich hast du nen char anstatt nen int deklariert.
Machma lieber nochmal gucki guck.da brauch ich nich "gucki guck" machen ich weiß das fgetc wie es als suffix ja mitgegeben wurde ein c -> char liefert...
Was denn für ein Suffix ?
Naturgemäß liefert fgetc einen integer zurück.
Siehe Deklaration fgets:int fgetc( FILE *stream );
Vermutlich machst du so etwas hier:
char c = fgetc( fp );
Und das ist falsch.
-
LordJaxom schrieb:
Swordfish schrieb:
atoi( )
ist nicht Standard C.Laut ISO/IEC 9899:1999 7.20.1.2 schon
Die beiden hab' ich wohl ab einem gewissen Zeitpunkt in einen Topf geworfen. Gnade! (oO Wo sind die Tierschützer!?)
alien_vs_nemo schrieb:
bekomme unter Windows die Warnung "conversion from 'int ' to 'char ', possible loss of data"
...und in welcher Zeile? ^^
greetz, Swordfish