Dateiausgabe

ElFunghi

Erfahrenes Mitglied
Hi@all,
hab ma ne frage un zwar will ich nen prog schreibn das eine bestimmte anzahl von einem bestimmten dateiformat in einen ordner ausgibt, hört sich nu etwas komisch an aba ich versuchs auch mal so zu erklären:

Wieviele Dateien benötigen sie? : 10
Welchen Dateityp benötigen sie? : .txt (kann auch ohne den "." sein wär mir sogar lieber)
-----------------------------------------
Wie soll der Ordner heisen? : Dateien

das mit dem ordner kann fehlen, naja ich hoffe ihr könnt mir helfen weil wenn ich mal zum coden diese .c dateien brauche hab ich keinen bock die ewig mit dos umzuwandeln!

THX
ElFunghi:)
 
Ich weiß zwar nach der Erklärung noch immer nicht warum du es benötigst, aber das hier sollte dich auf die richtige Fährte bringen:
(Ist zwar nicht unbedingt schön oder ausführlich, demonstriert aber den Lösungsweg)

Code:
// UNICODE-support & error handling omited for clearance 

#include <iostream>
#include <string>
#include <sstream>

// WinAPI
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

int main(int argc, char* argv[])
{
	std::string dir;
	std::string ext;
	std::string templ;
	int count=0;
	
	std::cout << "Directory: ";
	std::cin >> dir;
	std::cout << "File-Extension (without '.') : ";
	std::cin >> ext;
	std::cout << "Filename Template: ";
	std::cin >> templ;
	std::cout << "Number of files to create: ";
	std::cin >> count;

	CreateDirectory(dir.c_str(), 0);
	
	DWORD bufSize=0;
	char* oldCurDir=0;

	bufSize = GetCurrentDirectory(0, 0);

	oldCurDir = new char[bufSize];
	GetCurrentDirectory(bufSize, oldCurDir);

	std::string subdir;
	std::string::size_type start=0;
	std::string::size_type end=0;

	if(dir.find(':', 0) != std::string::npos)
	{	// drive specified, skip first '\'
		start = dir.find('\\',0); 
	}

	while((end = dir.find('\\', start)) != std::string::npos)
	{
		subdir = dir.substr(0, end);
		start = end+1;
		CreateDirectory(subdir.c_str(), 0);
	}

	CreateDirectory(dir.c_str(), 0);
	SetCurrentDirectory(dir.c_str());
	
	for(int i = 0; i < count; ++i)
	{
		std::stringstream filename;
		filename << templ << i << "." << ext;

		HANDLE file=0;
		file = CreateFile(	filename.str().c_str(), GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
							FILE_ATTRIBUTE_NORMAL, 0);
		CloseHandle(file);
	}

	SetCurrentDirectory(oldCurDir);
	delete[] oldCurDir;

	return 0;
}

EDIT:
Pass auf \ und \\ auf, der code-Tag, der "den Text exakt wie eingegeben wiedergibt" schluckt scheinbar \ (aus \ wird nichts und aus \\ -> \)

Edit die Zweite: Wieso haben die Smilies Vorrang vor den Tags?
(aus [ B ] ... : [ / B ] wird ein smiley und die tags werden daraufhin natürlich ignoriert)
 
Zuletzt bearbeitet:
also THX erstma,
allerdings hab ich nen prob das ich schon länger hab, ICH HAB KEINEN VERNÜNFTIGEN COMPILER!! hab nur so popel teil das bei meinem buch dabei war, naja hab mir den neuensten borland gesaugt, allerdings komm ich damit überhaupt nich klar, wo bitte ist denn der compiler?? viele dateien aber keine lässt sich ganz normal öffenen, also ich raff das nich, welchen compiler benutzt du? wenn borland, wie funtzt das teil??

THX
ElFunghi:)
 
Hmm, also wen du Borland Turbo C++ benutzt heißt die Datei zum starten der IDE "tc.exe" oder "bc.exe" wenn ich mich recht erinnere.
Ich persönlich benutze den Visual C++ 7 Compiler + IDE (nicht gratis).
Ein anderer erwähnenswerter (gratis) Compiler wäre DJGPP (http://www.delorie.com/djgpp/).
 
hm kann man das teil nicht irgentwie einfacher downloaden?
naja, aso wieviel kostet denn MS compiler da wenn nich soooo viel dann würd ich mir den kaufen!

THX
ElFunghi:)
 
Der MS ist nicht unbedingt billig, für genaue Preise (gibt ja verscheiden Editionen usw.) schau mal auf die MS-Site oder auf dir Site eines Händlers.
Ahja, mir sin d noch zwei kostenpflichtige eingefallen: der Intel Compiler (Ich glaub VisualAge oder so heißt der), der ist natürlich gut im optimieren.
Und der CodeWarrior von Metrowerks, der ist für praktisch alle Plattformen (Win32, Linux, div. Motorola Prozessoren, PS2 usw.) verfügbar.
 

Neue Beiträge

Zurück