Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

C Programmierung Datei einlesen und ausgeben





Frage

Hallo Community, habe für die Uni einige Aufgaben zu lösen, die das Einlesen einer Textdatei voraussetzen. #include <iostream.h> #include <stdlib.h> #include <stdio.h> main() { FILE *fil; char zeichen[1000]; fil = fopen("abc.txt", "r"); if (fil == NULL) { printf("\nDatei abc.txt kann nicht geöffent werden\n"); exit(-1); } while(!feof(fil)) { fscanf(fil, "%c", &zeichen); if (!feof(fil)) printf("%c", zeichen); } fclose (fil); system("PAUSE"); return 0; } Frage: Warum erscheint der Text nicht in der Kommandozeile? Wenn ich fscanf durch fprintf ersetze, erscheint der Text in Sonderzeichen (alle gleich). Würde mich über eine kurze, verständliche Antwort freuen, möchte nämlich kein Profi werden. Sonne

Antwort 1 von jill-out-

guckst du:


..
if (!feof(fil)) printf("%c", *[/]zeichen); 
..



Grundwissen- und Verständnis der Zeiger sind für C das A und O

Antwort 2 von jill-out-

hmmm:

 

if (!feof(fil)) printf("%c", *zeichen); 



Antwort 3 von Pumuckel

oder

printf("%s", zeichen);

Antwort 4 von Das_Urmel

Kerningham & Ritchie arbeiten das Thema immer noch prima auf.
Ran gehts. (#)

Antwort 5 von Sonnetje

Hallo und vielen Dank erstmal.
Ich glaube erhlich gesagt nicht, dass da ein Fehler drinsteckt. Wahrscheinlich mache ich nur einen ganz blöden Denkfehler drin. :-)
Trotzdem vielen Dank
Gruß Sonnetje

Antwort 6 von jill-out-

soso du glaubst nicht ...

natürlich steckt da ein fehler drin.
du definierst zeichen als ein char array zeichen[1000]

was wird dir zeichen dann anzeigen? den zeiger auf das array natürlich und nicht etwa wie du meinst, das erste element. das wäre mit zeichen[0] oder eben mit *zeichen zu bekommen. benutze einen debugger und lass dir zeichen, zeichen[0] und *zeichen im watchfenster darstellen, nur so kapierst du was da im programm passiert....

oder bleibe bei deinem glauben und lass dir weiterhin die speicheraddresse von zeichen als "%c" ausdrucken ;-)