c++ wypisywanie ciągu znaków z zadanego pliku

0

Witam mam napisany program wypisujący litery z zadanego pliku, chodzi mi teraz o przerobienie tego programu tak aby wypisywał tylko łańcuchy o co najmniej 3 znakach, bo teraz wypisuje każdą literę nawet pojedynczą a ma wypisywać tylko wtedy gdy conajmniej 3 litery znajdą się obok siebie.


#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main ()
{
  int dlugosc;
  char * bufor;
  string plik;
 
  cout << "Podaj nazwe pliku wejsciowego : ";
  cin >> plik;
  ifstream wejscie(plik.c_str(), ios::binary );
  if(!wejscie)
   {
      cout << "Nie moge otworzyc takiego pliku "<<endl;
        system("pause");
      return 1;
   }
 
 
 
  ofstream wyjscie ("test.txt");
                                    // Sprawdzamy długość pliku
  wejscie.seekg (0, ios::end);
  dlugosc = wejscie.tellg();
  wejscie.seekg (0, ios::beg);
                                     //


  bufor = new char [dlugosc];                //Rezerwujemy miejsce w pamięci

 
  wejscie.read (bufor,dlugosc);               //Wczytujemy dane i umieszczamy w pamięci
  wejscie.close();
  for (int i=1 ; i <=dlugosc ; i ++)
   {
     if ((*bufor >= int(65)) && (*bufor <= int(122)) || (*bufor = int(32)))     
          
      {          
   
      cout.write (bufor, 1);
      wyjscie.write(bufor, 1 );
      }
     bufor++;
   
   }
  wyjscie.close();
  system("pause");
  return 0;
} 
0

Popraw linijkę:

if ((*bufor >= int(65)) && (*bufor <= int(122)) || (*bufor = int(32)))

bo tutaj masz błąd.

0

Popraw linijkę:

if ((*bufor >= int(65)) && (*bufor <= int(122)) || (*bufor = int(32)))

bo tutaj masz błąd.

0
moolchass napisał(a)

Popraw linijkę:

if ((*bufor >= int(65)) && (*bufor <= int(122)) || (*bufor = int(32)))

bo tutaj masz błąd.

Na taką:?
if ((*bufor >= int(65)) && (*bufor <= int(122)))

0

Gdzie jest błąd w tej linijce bo nieiwem, mi się wydaje że jest dobra

0
  1. zamiast liczb stosuj 'a' A' 'z' Z' albo jeszcze lepiej isalpha - mniejsza szansa głupiej pomyłki i bardziej zrozumiałe co chcesz zrobić.
  2. Po co kastować int na int?
  3. masz wyciek pamięci, gdzie jest delete?
  4. tu masz moją wersję:
#include <cctype>
#include <iostream>

void copyAlphaStrings(const char *buffor, int n, int minLettersCount = 1, ostream& dest = cout) {
     for(int i=0; i<n; ++i ) {
          if(isalpha(buffor[i]) {
               for(j=i+1; j<n; ++j)
                   if(!isalpha(buffor[i]) {
                        break;
                   }
               if(j-i>=minLettersCount) {
                   dest.write(buffor+i, j-i);
               }
               i=j;
          }
     }
}
0

już prawie wszystko działą, tylko jest jeden problem, gdy wczytuje plik txt wszystko gra, ale jak próbuje wczytać plik exe to program się wywala: "Debug Assertion Failed Expression: (unsigned)(c + 1) <= 256

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