[c++] fstream, zapisywanie do pliku

[c++] fstream, zapisywanie do pliku
Tomasz Cabaj
  • Rejestracja:około 6 lat
  • Ostatnio:około 5 lat
  • Postów:1
0

Witam, uczę się biblioteki fstream i napotkałem się na problem. Program się kompiluje, jednak nic nie zapisuje się do pliku. Moim zamiarem jest, gdy za każdym razem gdy dopisze się dodatkowe dane, na początku program ma wyliczyć ile razy w pliku wystąpił znak [ a następnie na podstawie jego ilości przypisać kolejny numer ID do pliku. Jednak mimo wpisyania wszystkich danych program nie zapisuje danych. Wiem, że kod jest mało czytelny, pewnie bardzo błędnie napisany - proszę o poprawienie mnie.

Kopiuj
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int item_id = 0;
	string id_char;
	short int item_tier;
	char item_type[32];
	char item_name[256];
	short int item_resourcesNeeded;
	
	scanf("%d", &item_tier);
	
	scanf("%s", &item_type);

	scanf("%s", &item_name);
	
	scanf("%d", &item_resourcesNeeded);

	
	fstream file("plik.txt");
	
	fstream file1;
	file1.open("plik.txt", ios::out | ios::app);
	if(file1)
	{
		while(getline (file, id_char))
		{
				if(!(string::npos == id_char.find(" [ ")))
					item_id++;
					else
					item_id = 25000;
		}
		
		file1 << "[" << item_id << "]" << item_tier << "." << item_type << "." << item_name << "." << item_resourcesNeeded << "\n" ;
		 file1.close();
	}
}
06
Dlaczego scanf a nie std::cin?
Tomasz Cabaj
@_0x666_: wygodniej mi się korzysta po prostu i ćwiczę sobie używanie różnych odpowiedników po prostu
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
3

Otworzyłeś plik tylko do zapisu. Próbujesz z niego czytać. Nie sprawdzasz czy operacje wykonały się.

Sunnydev
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Nether
  • Postów:235
1

Zdecyduj się czy chcesz pisać w C++ czy w C, ale nie mieszaj. Upewnij się, że plik, który chcesz otworzyć znajduje się w tej samej lokalizacji co program i dodaj jakiś output wypisujący Ci czy jest połączenie z plikiem czy nie. Możliwe, że po prostu warunek się nie spełnia.


lubię tylko w c++ i w rust i w go i w haskell. pythona nie lubię, javy też. c# toleruję.
edytowany 1x, ostatnio: Sunnydev
Tomasz Cabaj
Chodzi ci o używanie biblioteki <stdio.h>?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.