Just nu i M3-nätverket
Jump to content

Kopiera innehåll i filer


Dark Spirit

Recommended Posts

har gjort så långt program att ja inte vill visa hela här för att de skulle ta så stor plats, men hoppas att det är här felet är:

 

void kryptera(void){
    cout << "Vill du kryptera det som finns i minnet?"
         << endl
         << "Tryck 1 f\x94r att kryptera."
         << endl
         << "Tryck 2 f\x94r att avbryta."
         << endl
         << "# ";
         cin >> janej;
         if (janej=='1'){
            cout << "Kryptering startas..." << endl;
            fin.open("kryptering");
            int index = 0;
            while (fin.get(las)){
                  krypto[index] = las;
                  index++;
            }
            index = 0;
            for (;krypto[100]>index;index++)
                cout << krypto[index];
            fin.close();
         }
}

 

Det ska öppna en fil, läsa in allt som står i den i char variabeln krypto, sen ska de skrivas ut på skärmen ( bara för att se att de funkar, ska använda den annorlunda sen )

men när ja kör programmet så står de:

 

Vill du kryptera det som finns i minnet?
Tryck 1 för att kryptera.
Tryck 2 för att avbryta.
# 1
Kryptering startas...
>

 

innehållet skrivs aldrig ut... har gjort en funktion som ser ut nästan exakt likadant fast med andra variabler och lite kortare, den funkar...

 

Link to comment
Share on other sites

Den här raden tycker jag ser underlig ut:

for (;krypto[100]>index;index++)

Varför jämför du innehållet i krypto-arrayen med index?

 

Link to comment
Share on other sites

Den här raden tycker jag ser underlig ut:

for (;krypto[100]>index;index++)

Varför jämför du innehållet i krypto-arrayen med index?

 

Det är bara för att skriva ut innehållet bokstav för bokstav, har tänkt att använda mig av de sen men rättså onödigt just nu, kunde skrivit

 

cout << krypto << endl;

 

för samma sak ^^

 

ja prövade med det oxå, men funkade inte, tror att det är nåt fel med

 

fin.open("kryptering");
int index = 0;
while (fin.get(las)){
krypto[index] = las;
index++;
   }

 

men kan inte hitta de...

 

fin.open(filnamn);
int index = 0;
    while (fin.get(las)){
          texten[index] = las;
          index++;
    }

 

den där funkar, och dem är ju likadana fast med olika variabler och olika filer, kan det vara

fin.open("kryptering"); 

som är fel?

 

Link to comment
Share on other sites

Jag vet för lite om filhanteringen i C++ för att svara på om "fin.open("kryptering");" är korrekt eller inte. Men man brukar få en status tillbaks som anger om öppnandet av en fil har gått bra. Sedan kan du ju alltid lägga in extra utskrifter för att kontrollera att du kommer innanför while-loopen och vad "las" har fått för värde egentligen.

 

Det är bara för att skriva ut innehållet bokstav för bokstav, har tänkt att använda mig av de sen men rättså onödigt just nu, kunde skrivit

Men det gör du inte, om 100:e elementet i krypto-arrayen är 0 så kommer du inte att skriva ut någonting.

 

Link to comment
Share on other sites

  • 1 month later...

Det finns ingen mening att skapa en char array att lagra filen i, använd istället en sträng eller en vector av strängar, t ex:

 

#include <iostream>

#include <string>

#include <fstream>

#include <vector>

using namespace std;

 

int main(int argc, char* argv[])

{

ifstream in("main.cpp");

vector<string> vec;

string line;

while (getline(in, line))

vec.push_back(line);

 

//skriv ut filen:

for (int i = 0; i < vec.size(); i++)

cout << vec << endl;

return 0;

}

 

Link to comment
Share on other sites

Jag blir liten nyfiken nu... Bortsett från att det är lite tjusigare att använda string/vector, vad vinner man på det? Du läser ju i alla fall in hela filen först och skriver ut den sedan.

 

Link to comment
Share on other sites

Det här var bara ett användnings exempel, för att se hur man kan gå till väga. Sträng-biblioteket är väldigt kraftfullt, så varför inte ta användning utav det istället för att börja från scratch? Skulle kanske ha gett ett bättre exempel, där jag utnyttjade sträng funktioner som t ex replaceAll (replaceAll(text, "a", "AAA");) , vilket skulle kunna vara ett tillvägagångssätt för den s k "krypteringen".

Sen tycker jag själv, även om man bara ska ladda filen, att det ser snyggare ut.

 

 

Link to comment
Share on other sites

Tänkte helt fel när jag skrev ovanstående, så skriver om det med ett ex:

 

"där jag utnyttjade funktioner som t ex find och replace för att göra en krypteringsfunktion, t ex såhär:"

 

#include <iostream>

#include <string>

using namespace std;

 

string& replaceAll(string& text, const string& from, const string& to)

{

size_t search = 0;

size_t find;

while((find = text.find(from, search)) != string::npos)

{

text.replace(find, from.size(), to);

search = find + to.size();

}

return text;

}

 

int main() {

string text = "a b c d e, aaaa";

replaceAll(text, "a", "AAA");

cout << text;

}

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...