Usuwanie wiersza z pliku

0

Napisalem program, kotry ma usuwac wyraz z pliku tekstowego o dlugosci nizszej niz podaje uzytkownik jednak program nie dziala tak jak powinien, czy moglby ktos nakierowac jak to poprawic

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	const int rozmiar = 50;
	char nazwapliku[rozmiar];
	ifstream infile;
	ofstream NowyPlik;

	cout << "Podaj nazwe pliku ";
	cin.getline(nazwapliku, rozmiar);
	infile.open(nazwapliku);
	if(!infile.is_open())
	{
		cout << "Nie udalo sie otworzyc pliku ";
	}


	cout << "Podaj ile znakow ma miec najkrotsze mozliwe slowo: ";
	int n;
	cin >> n;

	char znak[50];

	NowyPlik.open("G:\\nowy_plik.txt");

	infile >> znak;
	while(infile.good())
	{
		if(sizeof(znak)>n)
			NowyPlik << znak << endl;
		infile >> znak;		
	}

	cin.get();
	cin.get();

	return 0;
} 
0

Pomyliłeś strlen z sizeof
Ucz się pisać bez zbędnych komplikacji: while(infile>>znak) if(strlen(znak)>=n) NowyPlik<<znak<<endl;
W tym przypadku radziłbym czytać znak po znaku, ma to dwie zalety:

  1. Przerwy między słowami zostaną zachowane.
  2. Nie trzeba będzie zakładać że żadne słowo w pliku nie przekroczy 49 znaków.
0

Wczytujesz linię getline-m do stringa, sprawdzasz długość wbudowaną w niego funkcją i zapisujesz do wynikowego albo nie.

0

dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1