fopen(filename,"w") funktioniert nicht für Dateien ohne Endung ?



  • void SampleBagIO::writeToLibSvmFile(const char* filename, SampleBag samplebag)
    {
    	if(filename != "")
    	{
    		FILE *fp = fopen(filename,"w");
    		ostringstream outputfile;
    		int featureSize = samplebag.getSample(0).getFeature().getSize();
    
    		for (int i = 0; i < samplebag.getSize(); i++)
    		{
    			int featureSize = samplebag.getSample(i).getFeature().getSize();
    			outputfile << samplebag.getSample(i).getClassNumber();
    			for (int j = 0; j < featureSize; j++)
    			{
    
    				outputfile << " " << j+1 << ":" << samplebag.getSample(i).getFeature().getValue(j);
    
    			}
    			outputfile << endl;
    			string str = outputfile.str();
    			const char *c = str.c_str();
    			fputs(c, fp);
    		}
    		fclose(fp);
    	}
    }
    


  • FILE* file =  std::fopen ("test","w");
    	 fputs ("2",file);
    	 fclose (file);
    

    Das funktioniert bei mir. Eventuell stimmt was mit den Rechten nicht.

    Aber warum machst du das so kompliziert? Wenn du sowieso schon mit ostringstream arbeitest, kannst du doch auch gleich einen ofstream nehmen, anstatt das so komisch zu verrenken.



  • soweit ich mich entsinne hab ich das probiert aber bei ofstream muss die datei vorhanden sein und kann nicht beim initialisieren erzeugt werden.

    correct me if i'm wrong





  • Hmm.. komisch, wo sind die "Das ist ein C++ forum nicht ANSI C forun" kommentare



  • ok danke probiers gleich nochmal.

    Bin im Moment leider schon beim nächsten Problem ^^



  • void SampleBagIO::writeToLibSvmFile(const char* filename, SampleBag samplebag)
    {
    	if(filename != "")
    	{
    		ofstream outputfile;
    		outputfile.open(filename);
    
    		for (int i = 0; i < samplebag.getSize(); i++)
    		{
    			int featureSize = samplebag.getSample(i).getFeature().getSize();
    			outputfile << samplebag.getSample(i).getClassNumber();
    			for (int j = 0; j < featureSize; j++)outputfile << " " << j+1 << ":" << samplebag.getSample(i).getFeature().getValue(j);		
    			outputfile << endl;
    		}
    		outputfile.close();
    	}
    }
    

    sieht echt besser aus 😃

    Danke

    trotzdem bin ich noch nicht ganz zufrieden. Die angelegte Datei hat immer die Endung .txt

    ich finde doch noch das haar in der suppe ^^



  • if(filename != "")

    ist immer wahr.



  • if(!strcmp(filename,"")){
    ...
    }
    


  • @KA51O:
    Was übergibst du den?
    ofstream erzeugt dir eine Datei, genauso, wie du sie öffnen willst. Wenn du "hmm" übergibst, dann erstellt er dir eine Datei, die genau "hmm" heisst, ohne was anderes.

    BorisDieKlinge schrieb:

    if(!strcmp(filename,"")){
    ...
    }
    

    Oder gleich std::string und std::string::c_str benutzen.


Anmelden zum Antworten