Zeilende erkennen



  • Hi Leute,

    ich habe da ein Problem. ich möchte ein ungeplantes Zeilenende erkennen. ich habe das mit strchr probiert, aber ohen erfolg. mein Code ist der

    for(iLoop=0; iLoop<BLOECKE; iLoop++)				
    					fscanf(ptrcode_file, "%s", &cline2[iLoop*BLOCK_BREITE]);
    
    						if(strchr(cline2, '\n'))
    							printf("%s", "Zeilenende gefunden");
    

    man muss sich das so vorstellen, dass was ich einlese ist so aufgebaut "AA BB CC DD"
    mit scanf les ich den ersten Block AA ein. Danach BB usw. Theoretisch ist in jeder Zeile von AA bis DD alles vorhanden.Ich habe vorher definiert, dass ich 4 mal einlese, also 4 Blöcke (einer Zeile) einlesen will. Angenommen in einer Zeile fehlt block "DD" dann würde er ja in die nächste Zeile rutschen und "AA" als Block einlesen. Das wär aber falsch. Ich möchte das er regulär alle 4 Blöcke einliest, jedoch wenn er vorzeitig in eine neue Zeile rutschen würde, er das erkennt und ich eine Fehlerausgabe einbauen kann.
    mit strchr geht es jedenfalls nicht bei mir.

    Gruß



  • Entweder du kontrollierst das irgendwie anders, (fscanf() Rückgabewert könnte interessant sein.) oder du nutzt fgets(). Die scanf() Familie liest keine Leerzeichen oder Zeilenumbrüche ein.



  • In dieser Form kannst du keine '\n' Erkennung durchführen, o.g. Code überliest '\n' wie auch alle anderen Whitespaces. ( absolute C Grundlagen, schon seit K&R )
    Verwende fgets mit sscanf, da hast du eine automatische '\n' Erkennung inklusive.
    Beispiele gibts hier im Forum genug.


Anmelden zum Antworten