Erster buchstabe Datei lesen



  • Ich habe folgendes Problem ich habe eine Datei die sehr groß ist .
    Aus Perfomance Gründen möchte ich deshalb nur das erste zeichen in jeder zeile auslesen , das Problem ist wie ich nach fgetc in die nächste zeile springe .
    Zuerst dachte ich es wäre möglich mit fseek was zu machen doch es gibt anscheinend keinen modus um in die zeile x zu springen .
    Da es Zeit kosten würde jede Zeile ganz auszulesen hoffe ich das es irgendeine möglichkeit gibt das zu bewerkstelligen.

    Vielen Dank



  • Dateien sind ja sequenziell und nicht 2-dimensional aufgebaut, daher wirst du ohne ein lineares Durchsuchen nach den Newline-Zeichen nicht rumkommen.

    Vielleicht gibt es ja aber doch noch einen schlauen Weg.



  • Nein.
    So wie die Dateien aufgebaut sind musst du immer lesen bis zum '\n' um zu wissen wo Zeile n ist...

    Wenn du einige überpringst, läufst du gefahr ein '\n' nicht zu treffen.



  • Und wie is hiermit:

    //
    	const char file[]="test.txt";
    	FILE *pFile;
    	char zeilentext[100];
    	int zeile=0;
    
    	pFile=fopen(file,"r");
    
    	if (pFile!=NULL)
    	{
    
    	while(!feof(pFile))
    	{
    		zeile++;
    		fgets(zeilentext,100,pFile);
    		printf("Zeile %i: %c\n",zeile,zeilentext[0]);
    	}
    		fclose(pFile);
    
    	} else printf("Konnte '%s' nicht oeffnen\n",file);
    //
    


  • Maxx175 schrieb:

    Und wie is hiermit: [...]

    Damit ist's natürlich Essig, wenn nicht garantiert ist, dass jede Zeile 99 Zeichen lang ist und durch ein '\n' lang ist - oder 98 lang und durch "\r\n" Terminiert. 🙄

    cheers, Swordfish



  • Swordfish schrieb:

    Maxx175 schrieb:

    Und wie is hiermit: [...]

    Damit ist's natürlich Essig, wenn nicht garantiert ist, dass jede Zeile 99 Zeichen lang ist und durch ein '\n' lang ist - oder 98 lang und durch "\r\n" Terminiert. 🙄

    cheers, Swordfish

    Naja was er im Grunde macht ist auch nur das gesamte File durchlesen, und das ist eh etwas, was slacki eben nicht wollte, aufgrund risiger daten xD


Anmelden zum Antworten