C Zeichen im Textfile einlesen und im Array speichern...

ReVo

Lieutenant
Registriert
Jan. 2006
Beiträge
567
Hi,

ich habe es schon recht oft gemacht...und Frage mich was ich wieder falsch mache. Ich benutze fscanf und lese alles was im text steht zeilenweise ein. Also ich nehme mal hier ein einfaches beispiel:

PHP:
char zeichen[10];
int i = 0;

FILE *file;

file = fopen("file","r");

while(!feof(datei)) {
	fscanf(datei, "%c", &zeichen[i]);
	i++;
}

In mein "file" sind sagen wir 8 zeichen. Auf jedenfall genug für mein char array. Wenn ich mein zeichen ausgebe, werden die Sachen ausgegeben was im file waren + irgend ein Datenmüll. Mein Datenmüll ist relativ viel, also da stehen noch sehr viele kryptische zeichen. Die bräuchte ich halt nicht...verstehe aber garnicht warum das so ist, schließlich(geprüft) geht meine while schleife genau so oft durch wie es zeichen im file gibt(8x), also wie die restlichen kryptische zeichen herkommen weiß ich nicht :confused_alt:

Und ja, eigentlich ist das nicht schön mein zeichen schon vorweg auf 10Bytes zu definieren, aber wenn das nichtmal so funkt, dann weiss ich net. Eigentlich müsste ich in meine while schleife eine realloc reinklatschen was das ganze immer um 1Byte erweitert(da man nie weiß wie groß so eine file ist was eingelesenwird) - aber das später ;)

Jemand tips warum ich das problem haben?

Gruß
 
Wieso machst du dir das Zeilenweise einlesen aber auch so schwer??

PHP:
<?php
$handle = fopen ("lesen.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle);
    echo $buffer;
}
fclose ($handle);
?>

Dieser Code liest eine Textdatei Zeilenweise aus und schreibt sie auf die Website.
 
@Hudey: das sollte jetzt so eine PHP feat. C Beispiel werden? :) ... naja immerhin verstehe ich worauf du hinaus willst. Ja so mit fgets hätte es eig. auch gereicht.

@7H3 N4C3R: tatsächlich! Bin jetzt entweder verpeilt oder ka, aber ich dachte, dass bei einem char array, zb. wenn das so aussieht: char array[10] , dann ist da automatisch an der 10. stelle eine '\0' - naja gut, dann war das anscheinend anderswo so...

Danke und Gruß
 
Wenn du einfach so ein Array anlegst ist der Inhalt undefiniert. Er kann aus Nullen bestehen, muss es aber nicht. Übrigens: Du solltest immer eine Stelle reservieren für das abschließende \0. Also wenn du 10 Zeichen speichern willst, so sollte das Array 11 Zeichen aufnehmen können (und auch nicht erlauben, dass an die 11. Stelle was geschrieben wird). Andernfalls funktionieren die gängigen Stringfunktionen allesamt nicht.
 
Zurück
Oben