przepisywanie wiadomości

0

Dlaczego ktoś wyrzucił mój temat do kosza? Ja zadałem tylko pytanie czy jest mozliwe przepisanie bez zmiany miejsc liter w pliku? Pytam tylko o poradę. Czy ktoś mógłby to sprawdzić?

Mam napisać program, który przepisuje do pliku wszystkie znaki poza dużymi literami. Napisałem, ale program nie zostawia przepisywanych znaków na tej samej pozycji. Dlaczego?
Czy ktoś potrafi zmienić mój program?

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int kopiuj(char*, char *);
int main(int argc, char *argv[])
{
    char nazwa1[100];
    char nazwa2[100];
    cout<<"Podaj nazwe pliku do przepisania:";
    cin>>nazwa1;
    cout<<"Podaj nazwe pliku, do ktorego chcesz przepisac:";
    cin>>nazwa2;
    kopiuj(nazwa1, nazwa2);

    system("PAUSE");
    return EXIT_SUCCESS;
}
int kopiuj(char *nazwa1, char *nazwa2)
{
    char znak;
    ifstream plik1(nazwa1);
    ofstream plik2(nazwa2);

    do 
     {    
            plik1.get(znak);          
            if(!(znak>='A' && znak<='Z'))   
            plik2.put(znak);           
     } 
    while(!plik1.eof());
    plik1.close();
    plik2.close(); 
}
0
if(!(znak>='A' && znak<='Z'))   
            plik2.put(znak);
else
            plik2.put(0x20);
0

Co oznacza:

else
            plik2.put(0x20);

??

0

Spacje ;p patrz ASCII

0

Czyli w miejsce dużych liter program sam wstawia spację. DZIĘKI=]
A czy mógłbyś mi jeszcze pomóc z programem z przepisywaniem od tyłu?

0

Ale jak są puste linie to ten program wciąga literki do pierwszego wiersza :( Czy wiecie co zrobić, aby temu zapobiec i zostawić je tam gdzie są?

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;
int kopiuj(char *, char *);
int main(int argc, char *argv[])
{
    char nazwa1[100];
    char nazwa2[100];
    cout<<"Podaj nazwe pliku do przepisania"<<endl;
    cin>>nazwa1;
    cout<<"Podaj nazwe pliku, do ktorego chcesz przepisac"<<endl;
    cin>>nazwa2;
    kopiuj(nazwa1,nazwa2);

    system("PAUSE");
    return EXIT_SUCCESS;
}
int kopiuj(char *nazwa1, char *nazwa2)
{
    char c;
    ifstream plik1(nazwa1);
    ofstream plik2(nazwa2);

    do
    {
       plik1.get(c);
       if(c>='a' && c<='z')
       plik2.put(c);          
       else
       plik2.put(0x20);

    }
    while(!plik1.eof());

    plik1.close();
    plik2.close();

}
0

Ma ktoś jakiś pomysł?

0
#include <cctype>
// ...
int kopiuj(const char *nazwa1, const char *nazwa2)
{
    char c;
    ifstream plik1(nazwa1);
    ofstream plik2(nazwa2);

    while (plik1.get(c))  plik2.put(islower(c) || iscntrl(c) ? c : ' ');
}
0

Hm, źle. Teraz spojrzałem na treść zadania w pierwszym poście, z którą znajdujący się pod nią kod nie ma nic wspólnego.

while (plik1.get(c)) plik2.put(isupper(c) ? ' ' : c);
0

Też nie idzie;/

#include <cstdlib> 
#include <iostream> 
#include <fstream> 
#include <cctype>

using namespace std; 

int kopiuj(char*, char *); 
int main(int argc, char *argv[]) 
{ 
    char nazwa1[100]; 
    char nazwa2[100]; 
    cout<<"Podaj nazwe pliku do przepisania:"; 
    cin>>nazwa1; 
    cout<<"Podaj nazwe pliku, do ktorego chcesz przepisac:"; 
    cin>>nazwa2; 
    kopiuj(nazwa1, nazwa2); 

    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 
int kopiuj(char *nazwa1, char *nazwa2) 
{ 
    char c; 
    ifstream plik1(nazwa1); 
    ofstream plik2(nazwa2); 

while (plik1.get(c)) plik2.put(isupper(c) ? ' ' : c);
    plik1.close(); 
    plik2.close(); 
} 

Co jest nie tak?

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