do while probleempje...

Status
Niet open voor verdere reacties.

QuadranII

Gebruiker
Lid geworden
14 okt 2007
Berichten
30
Code:
do {
   getline( input, mystr );
   if(strcmp(mystr.c_str(),"###EOA")!=0);
   {
      fprintf(stream,"%s\n", mystr.c_str());
   }
} while(strcmp(mystr.c_str(),"###EOA")!=0);

Bovenstaande code doet niet exact wat ik er van verwacht.

Ik lees steeds een string text in en kijk of deze verschillend is aan ###EOA
Indien verschillend wordt de text regel afgedrukt
Indien gelijk aan ###EOA mag ###EOA NIET(!) afgedrukt worden, doch met bovenstaande code gebeurt dit toch (?)

Wat doe ik verkeerd ? :confused:
 
Waarschijnlijk omdat de CR en/of LF er nog aan vast zitten.

Probeer eens: strcmp(mystr.c_str(), "###EOA\r\n");
of: strncmp(mystr.c_str(), "###EOA", 6);
 
Code:
 fprintf(stream, "HEENWEDSTRIJDEN\n\n\n");


  int speeldag_data_1x_drukken;

   for(x=1;x<=26;x++)
   {
      speeldag_data_1x_drukken = false;
      ifstream input("C:\\PROGRAM FILES\\VOETBAL\\DATA\\HEEN.TXT");
      do {
	 getline( input, mystr );
	 if(strcmp(mystr.c_str(),"###SPD")==0)
	 {
            getline( input, mystr );
	    if(StrToInt(mystr.c_str())==x)
	    {
                 getline( input, mystr );
		 if(strcmp(mystr.c_str(),"###BOA")==0)
		 {
                    getline( input, mystr );
                    if(speeldag_data_1x_drukken == false)
                    {
		       fprintf(stream,"%s\n\n", mystr);
                       speeldag_data_1x_drukken = true;
                    }
                    getline( input, mystr );
		    fprintf(stream,"%        s\n", mystr);

		    do {

                       getline( input, mystr );
		       if(strcmp(mystr.c_str(),"###EOA")!=0);
		       {
			  fprintf(stream,"%        s\n", mystr.c_str());
		       }

		[b]   } while(strncmp(mystr.c_str(),"###EOA",6)!=0);[/b]
		 }

	    }
	 }

      } while(strcmp(mystr.c_str(),"###EOF")!=0);

      input.close();

   }
 
Waarschijnlijk omdat de CR en/of LF er nog aan vast zitten.

Ik denk van niet want met de andere strcmp's lukt het wel. Ik heb toch maar eens strncmp gebruikt ipv strcmp maar dit levert niet veel meer op als resultaat.

Hij blijft ###EOA afdrukken in de filestream. :confused:
 
probeer dit eens:

Code:
if(strcmp(mystr.c_str(),"###EOA")!=0);

vervangen door

if( *(mystr.c_str()) != *"###EOA" )
 
ik denk dat het komt omdat een van beide strings niet is afgesloten met een null maar dat zou ik je niet met zekerheid kunnen zeggen. zelf probeer ik voor dit soort dingen zo min mogelijk functies te gebruiken die al bestaan omdat je nooit precies weet wat ze doen, moet je mis ook proberen ;)
 
hmm mischien wel ja lol :p

*edit: klopt, rot pointers
 
Laatst bewerkt:
het probleem is opgelost,

of het nu # of ###EOA leest, het resultaat is wat telt, ik ga het niet veranderen.

bedankt jongens :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan