Witam mam zadanie aby stworzyc funkcje ktora najpierw liczy wystepowanie danego znaku w argv[1], a nastepnie wypisuje na ekran wyrazy w ktorych ten znak wystepuje dwukrotnie, potem przekazuje je do pliku. najpierw program dzialal normalnie przy dluzszych wyrazach sa jakies problemy, a teraz to juz wgl sie popsul nie wiem o co biega
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
/*
• zwracającą liczbę wszystkich wystąpień danego symbolu w pliku tekstowym,
• filtrującą zawartość pliku wejściowego w celu znalezienia wszystkich
wyrazów, w których dany symbol występuje dwukrotnie; wyrazy te
zapisać należy na standardowym wyjściu, a następnie przechwycić je do
pliku (każdy wyraz w nowym wierszu); przyjąć, że wyrazem jest każdy
ciąg znaków oddzielony spacją, tabulacją, końcem linii oraz końcem
pliku.
*/
int zlicz(char *a)
{ char symbol;
int licznik=0;
cout << "liczbe wystapien jakiego symbolu zliczyc?";
cin >> symbol;
for(unsigned int i=0;i<strlen(a);i++)
{
if(a[i]==symbol) licznik++;
}
return licznik;
}
void filtr(char*a)
{
string napis;
char symbol;
int licznik=0;
cout << "wystepowanie jakiego symbolu sprawdzic?";
cin >> symbol;
ofstream plik("zadanie5.txt");
for(unsigned int i=0;i<strlen(a);i++)
{
for(;isspace(a[i])==0;i++)
{
if(i>=strlen(a));
else
{
napis=napis+a[i];
if(a[i]==symbol)licznik++;
}
}
if(licznik>=2)
{
cout << napis << endl;
plik << napis <<"\t";
}
napis.clear();licznik =0;
}
}
int main(int argc,char *argv[])
{
//...
cout << zlicz (argv[1]);
filtr(argv[1]);
//...
return 0;
}
po wywolaniu programu w ubuntu pokazuje mi sie cala linijka ktora przed chwila wpisalem nie mam pojecia dlaczego, program nie liczy prawidlowo(w tym przypadku nie policzyl ze sa 4 wykrzyniki) oraz nie zostal stworzony plik do ktorego mialy byc przekazane wyrazy z dwoma wykrzynikami