Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Standarteingabe: Ausgabe mit Zeilennummern

Empfohlene Antworten

Veröffentlicht

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.

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.

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.

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;

}

}

}

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

danke

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.