next line???



  • hallöle!

    ich schreib grad ein kleines c-prog, bei dem ich den inhalt aus einer datei auslese und formatiert in eine andere schreibe. nun liest das prog zwar eifrig die erste zeile aus, aber geht nicht zur nächsten. 😕 wie kann man das realisieren? bitte nicht wundern, hab erst mit c angefangen, vorher nur v-c++.

    vielen dank schon mal!!!



  • Wie liest du denn ein? Quelltext?

    Gruß Tobias



  • ich les momentan die zeichen so ein...aber eigentlich wollte ich zeilenweise auslesen, geht das nicht? so müsste ich ja vorher schon wissen, wieviele chars in der Datei zusammen kommen und die weiterverarbeitung ist auch nicht so schön. ich bräuchts halt zeilenweise *grummel*..kannst du helfen? 🙄

    FILE* datei; 
    	int c;
    	char buffer[100];
    
      datei = fopen("a.ctx","r+");
    
      c = fgetc( datei );
      fscanf(datei,"%s",&buffer); 
      printf(buffer,"\n");
      getchar(); //als Pause zum Kontrollieren
    
      fclose( datei );
    


  • schau dir mal fgets() an



  • damit hab ichs schon versucht. dass man damit zeilen bekommt, weiss ich. aber nicht, wie man die zeilen durchläuft. ich hab immer nur die erste bekommen.. 😕



  • dann zeig mal deinen code her



  • was auskommentiert ist, wird zum schreiben in die datei genutzt (hoffe ich 😉 ). so bringt er mir nur die zeichen der ersten zeile, aber da müsste doch mehr kommen??? 😕 help me..

    FILE* datei; 
    	//FILE* datei_lpi;
    	int i,c;
    	char buffer[2000];
    	char getter[2000];
    
    	c = 0;
    	// Streams öffnen:
    	//datei_lpi = fopen("a.dpi","w+");
    	datei = fopen("b.dpi","r+");
    	//c = fgetc( datei ); 
    	fscanf(datei,"%s",&buffer);  
    	printf(buffer,"\n"); 
    
         while ( fgets(buffer, sizeof(buffer) - 1, datei) )
    	  { 
            printf("%s", buffer);
    		// Formatieren:
            for (i = 0; i<sizeof(buffer);i++)
    		{
    
    			getter[c] = buffer[i];
    			if(buffer[i] == '[')
    			{
    				getter[c+1] = '\n';
    				c = c + 2;	
    			}
    			else
    			{
    				c = c + 1;			
    			}
    		}
    		// in Datei ausgeben:
    		//fputs(buffer,datei_lpi); 
    	  } 
      getchar(); //als Pause zum Kontrollieren
    
      // Streams schliessen:
      fclose( datei );
      //fclose( datei_lpi );
    


  • printf(buffer,"\n");
    

    Das macht keinen Sinn! "\n" wird als Argument angesehen und buffer ist ein String, in dem keine Format-Zeichen vorkommen!

    Eine neue Zeile wird hier nicht ausgegeben!



  • das stimmt schon..mein problem hat sich sowieso erledigt, denn fgets() liest ja schon zeileweise aus! ich dödel habs nur nicht richtig weiterverarbeitet! scanf und print kannst du vergessen, da ich das eh nicht ausgeben muss, erst wieder in die datei..klappt auch alles, mit alphabetisch sortieren und so!!
    *FREU*

    und danke!


Anmelden zum Antworten