Zápis čísla do existujícího souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zápis čísla do existujícího souboru – C / C++ – Fórum – Programujte.comZápis čísla do existujícího souboru – C / C++ – Fórum – Programujte.com

 

ORION2060
Newbie
28. 4. 2017   #1
-
0
-

Zdravím,

potřeboval bych poradit se zápisem čísla do existujícího souboru. Program mi normálně vytvoří soubor s čísly, ale na konci tohoto souboru se potřebuji vrátit na začátek a zapsat nějaká data (tyto data znám až na konci souboru). K tomu jsem použil FILE.seekp(0). Nicméně pokud se mi takto něco zapíše, přepíše mi to původní data na daném řádku. A tedy moc nevím jak toto ošetřit. Napadlo mě udělat podmínku, aby se mi vložilo tolik mezer na začátek, kolika místné je ono číslo, ale to také nevím jak udělat. Děkuji  za případné rady.

Nahlásit jako SPAM
IP: 91.139.6.–
ondrej39+1
Věrný člen
28. 4. 2017   #2
-
0
-

#1 ORION206
V tvem pripade mas jedinou moznost. Po zjisteni jaka data mas zapsat nacpat tato data do nejakeho streamu a prepsat puvodni soubor obsahem <zjistena data>+<obsah souboru s cisly>, efektivne provadejici append.

Pokud je puvodni soubor maly, muzes jeho puvodni obsah cely nacpat do RAMky, concatnout retezce a vznikly retezec zapsat do puvodniho souboru. Pokud je puvodni soubor velky tak je asi nesmysl ho cpat do RAM cely, ale bude rozumejsi si vytvorit nejaky docasny soubor, kde nejdrive zapises data, potom appendnes zbytek puvodniho souboru a nakonec nahradis puvodni soubor za tento docasny.

Nezapomen, ze diskove IO operace jsou podstatne casove drazsi nez v prace v operacni pameti.

Nahlásit jako SPAM
IP: 94.112.62.–
Inject all the dependencies!
ORION2060
Newbie
28. 4. 2017   #3
-
0
-

Ahoj, díky za radu. Prosím tě, nemohl by jsi mi poradit názornou ukázkou, s Cčkem teprve začínám.

Můj kod vypadá prozatím takhle a jde o výpis pocetRadku na začatek souboru.:

	// PODMINKA PRO ODRAZIVOST
	if (volba == 'O' || volba == 'o')
	{
		std::ifstream ifs("CislaZdroj.txt", std::ifstream::in);
		std::ofstream ofs("Vysledek_Cisla_Dle_Odrazivosti.txt", std::ofstream::out);

		cout << "Zadejte odrazivost pro vytvoreni souboru.\n";
		cout << "Zadejte meze odrazivosti: (nejpreve zapornou a pak kladnou)\n";
		cin >> odrazivost[0];
		cin >> odrazivost[1];

		int a = 0;

		ofs << "<" << odrazivost[0] << "; " << odrazivost[1] << ">\n";


		if (ifs.is_open() && ofs.is_open())
		{
			std::string line;
			while (std::getline(ifs, line))
			{
				std::istringstream ss(line);
				std::string token;

				float pole[COLUMNS];
				int i = 0;
				while (std::getline(ss, token, ' '))
				{

					pole[i] = stof(token);

					i++;
				}
				radek soucasnejRadek;
				soucasnejRadek = MakeRow(pole);

				if (odrazivost[0] <= soucasnejRadek.odrazivost && odrazivost[1] >= soucasnejRadek.odrazivost)
				{
					a++;
					pocetRadku = a;
					ofs << soucasnejRadek.x << " " << soucasnejRadek.y << " " << soucasnejRadek.z << " " << soucasnejRadek.odrazivost << " " << soucasnejRadek.r << " " << soucasnejRadek.g << " " << soucasnejRadek.b << '\n';
				}

			}
			ifs.close();
			ofs.close();

		}
		else
		{
			std::cout << "Error opening file";
		}

		cout << "Pouzita odrazivost pro tento soubor:\n";
		cout << "Odrazivost:\n" << "<" << odrazivost[0] << "; " << odrazivost[1] << ">\n";

	}
Nahlásit jako SPAM
IP: 91.139.6.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 104 hostů

Podobná vlákna

Zapis do souboru — založil WoSSa

Zápis do souboru — založil Robert

Zapis do souboru — založil Ondřej Karanský

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý