kkkiwi Geschrieben 31. Mai 2009 Geschrieben 31. Mai 2009 Hallo, ich habe ein kleines Problem und zwar soll ich durch eine Standarteingabe die aus einer Datei kommr einen Text (Gedicht) einlesen und diesen anschließend wieder mit Zeilenangaben ausgeben. Leider klappt das Ganze nicht so wie ich will. Ich kann zwar den Text aus der Datei lesen, allerdings nicht mit vorgeschobener Zeilennummerierung :S Wüde mich echt freuen wenn mir jemand helfen könnte. #include <stdio.h> main(){ int i=0; int c = getchar(); while (c != EOF) { putchar©; c = getchar(); if (c == /n) /* -----> hier liegt mein Fehler; ich weiß, dass immer wenn ein Zeilenumbruch kommt die Zeilenzahl um eins erhöht werden muss... aber ich weiß nicht wie ich das ausdrücken kann...*/ printf ("%4d",i++); } } Danke für eure Hilfe. Zitieren
lit-web Geschrieben 31. Mai 2009 Geschrieben 31. Mai 2009 Ich habe nun nicht so große Ahnung von C++ (noch nicht). Aber ich denke um die Zeilennummern mit auszugeben müsstest du das File bzw. den Text aus dem File in ein Array lesen und von da aus das dann so handeln das die Zeilen mit ausgegeben werden. Zitieren
Gkar Geschrieben 31. Mai 2009 Geschrieben 31. Mai 2009 Ich denke mir ist eine mögliche Lösung für dein Problem eingefallen. Es ist zwar nicht sonderlich schön gelößt, aber es dürfte trotzdem seinen Zweck erfüllen. Ich würde folgende Codesegmente in deinen Code noch einbauen: int zaehler=2; /*für die laufende Zeilennummerierung*/ int merker=0; /*als Hilfsvariable für einen möglichen Zeilenumbruch*/ Für deine If-Schleife: if (c == /n) { merker=1; } Nach der Ausgabe des eingelesenen Zeichens: if (merker == 1) { printf("%i: ", zaehler); zaehler++; merker=0; } Bzw. was du noch benötigst ist ein einfaches Printf für die erste Zeile, weil die währe ja nicht nummeriert, weil noch kein Zeilenumbruch stattgefunden hat. Ich hoffe das konnte dir etwas weiterhelfen. Zitieren
kkkiwi Geschrieben 31. Mai 2009 Autor Geschrieben 31. Mai 2009 Hallo, schon mal ein ganz großes Dankeschön für eure Hilfe. Leider läuft das Programm bei mir immer noch nicht. Und zwar bekomme ich für den Ausdruck: if (c== '/n') bzw. if c== /n) immer die Fehlermeldung: Warnung! Zeichenkonstante mit mehrern Zeichen... kann mir vllt jemand sagen woran das liegt- bzw was ich abändern muss, damit der Zeichenumbrucherkannt wird? die momentane Fassung des Programms sieht so aus: #include <stdio.h> main(){ int zaehler=2; /*für die laufende Zeilennummerierung*/ int merker=0; /*als Hilfsvariable für einen möglichen Zeilenumbruch*/ int i=0; int c = getchar(); printf("1"); while (c != EOF) { putchar©; c = getchar(); if (c == '/n') { merker=1; } if (merker == 1) { printf("%i: ", zaehler); zaehler++; merker=0; } } } Zitieren
Klotzkopp Geschrieben 1. Juni 2009 Geschrieben 1. Juni 2009 \n, nicht /n Den Merker brauchst du nicht, weil du ihn ja sowieso sofort danach auswertest. Zitieren
kkkiwi Geschrieben 1. Juni 2009 Autor Geschrieben 1. Juni 2009 Hey ihr beiden, ein ganz großes Dankeschön an euch. Jetzt sieht das Ganze schon ganz gut aus. Leider steht der Zeilenzähler noch eine Zeile über dem Text... ich hoffe mal, dass ich das heute mittag noch hinbekomme... aber das wird hoffentlich noch klappen. VG Zitieren
Klotzkopp Geschrieben 1. Juni 2009 Geschrieben 1. Juni 2009 Setz einfach das getchar in der Schleife hinter den if-Block. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.