Zeilennummern - {Help}



  • Ich hoffe ich hab das richtige Sub Forum gewählt...

    Also ich muss ne Aufgabe lösen in C und zwar geht es um Zeilen nummern.

    text1.txt (Input)
    Guten Tag
    Schönes Wetter am 4.9.2007
    

    folgende funktionen sollten vorkommen :
    - String Funktionen
    - File Funktionen
    - Iterationen

    Aufgabe :

    Ziel
    Komplexere Aufgabe mit gleichzeitigem Lesen und schreiben derselben Datei

    Ausgangslage
    Wenn Sie ein C-Programm compilieren und der Compiler findet einen Fehler, gibt er die Zeilennummer an, auf der das selbe Problem auftritt. Leider haben C-Programme aber keine Zeilennummern unter einem neuen Namen wieder ausgibt.
    Beispiel
    Eingabedatei: Hallo.CPP

    #include <iostream>
    int main()
    {
    cout << "Hallo Welt" << endl;
    return 0;
    }
    

    Ausgabe Hallo_2.CPP

    1: #include <iostream>
    2: int main()
    3:{
    4: cout << "Hallo Welt" << endl;
    5: return 0;
    6: }
    

    Achtung
    Sie benötigen zusätzliche Bibliotheksfunktion, mit der Sie einen numerischen Wert (z.b. Zeilenzähler) in einen String umwandeln können. Diese Funktion lautet folgendermassen:

    int zaehler = 17;
    char neueZeile [255];
    sprinf(neue Zeile, "3%d: ", zaehler);
    

    Ich hoffe ihr könnt mir helfen
    Danke im Voraus
    So long...
    Plion 😃



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ach kinder, könnt ihr nicht einfach fragen stellen? das sind diese sätze mit dem fragezeichen am ende.

    was genau ist dein problem? wieweit bist du und was verstehst du nicht?



  • // Zeilennummern.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    
    int main(int argc, char* argv[])
    {
    	char readlines[255]; // Variable zum Lesen und Schreiben der Datei.
    	int zahler; // Für die Nummer der Zeilen. (1:, 2:,3: ...)
    	zahler=0;
    	FILE * fp; // Pointer zum Lesen
    	FILE * fp2; //Pointer zum Schreiben
    
    	fp=fopen("text.txt","r"); // Offnen der Datei text.txt, die ich schon erstellt und etwas reingeschrieben habe.
    	fp2=fopen("textoutput.txt", "w"); // File zum schreiben
    
    	if (fp==NULL)
    	{
    		printf("Fehler beim Oeffnen der Datei %s\n", "text.txt");
    		return 1;
    	}
    	if (fp2==NULL)
    {
    		printf("Fehler beim Schreiben der Datei %s\n", "text.txt");
    		return 1;
    }
    
    while (!feof (fp)) // lesen bis zum End of File
    {
    	fgets(readlines,255,fp); // Zeilen lesen
    	printf("%s",readlines);	 // Zeilen ausgeben
    	zahler=zahler+1; // Zeile mitzählen
    	fprintf(fp2,"%i: %s\n",zahler,readlines); // zeile in die Datei schreiben
    
    }
    fclose(fp); // schliessen
    fclose(fp2);
    	return 0;
    }
    

    ich habs jetzt so gelöst meine frage nun was kann ich machen (ich denke es geht mit strlen) das es keine zeilenabstände gibt im C programm...

    so long...

    Plion



  • fgets speichert den zeilenumbruch mit in den buffer. das heißt, du musst es bei deiner fprintf-ausgabe so schreiben:

    fprintf(fp2,"%i: %s",zahler,readlines); // zeile in die Datei schreiben
    

Anmelden zum Antworten