Gå til innhold

LØST: Les fil1, lagre filut.txt, Les fil2, lagre


Gjest Slettet+19873487

Anbefalte innlegg

Gjest Slettet+19873487

Hei

 

Jeg er ikke så veldig stø på programmering og skulle trengt litt hjelp med et problem som jeg har. Jeg har prøvd google, men visste ikke helt hva jeg skulle søke på, så det var ikke lett å finne en løsning.

 

Jeg har et program som leser inn en fil og lagrer output i en annen fil. Dette går helt fint, men ettersom jeg har flere filer, så vil jeg gjerne at programmet gjør seg ferdig med en fil, og så går videre til neste fil.

 

Det jeg har prøvd på virker kanskje litt rart, men jeg har prøvd noe som dette:

 

char *pFile, *outputFile;
char *filename[3] = { "fil1", "fil2", "fil3", "out.txt"};
char *output[20];

for (i = 0; i < 3; i++)
{
// Åpne pFile for lesing
pFile= fopen (filename[i], "r");


// Sett sammen navnet til ut-fil
output = filename[i] + filename[3];


// Opprette og åpne outputFile for skriving
outputFile = fopen (output, "w"); 


// Lukke filene etter bruk
fclose(outputFile);
fclose(pFile);
}

 

 

Jeg vil veldig gjerne ha tilbakemeldinger på hva som burde vært gjort annerledes og hvis noen har et eksempel på hvordan dette skulle kunne bli gjort, så post gjerne koden her.

Endret av Slettet+19873487
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+19873487

Vel. Det svaret der var ikke så veldig forståelsesfullt, men takk for at du prøver :)

 

 

Er det noen som kan komme opp med et eksempel i C som finner filer med omtrent samme filnavn. Som hie01, hie02, hie3 osv. Åpner hie01, henter en linje, lagrer det i hie01out.txt og så går videre til hie02, henter en linje og så lagrer den i hie02out.txt?

 

Takk til de som prøver. :)

Endret av Slettet+19873487
Lenke til kommentar

nisse; du spurte et ja/nei-spørsmål, og fikk et ja-svar .. *duhh*

 

angående det nye spørsmålet så kan du under linux bruke `getdirentries' (se man 3 getdirentries) og standard stringoperasjoner for å finne lignende navn .. jeg vet ikke om win32 har noe tilsvarende

 

(jeg kommer ikke til å bruke tid på å løse dette for deg - kanskje noen andre gjør det ..)

Lenke til kommentar
Gjest Slettet+19873487

Jeg har fortsatt ikke kommet opp med noen god løsning.

 

Noen som kunne vist meg hva jeg burde gjort her:

// Sett sammen navnet til ut-fil
output = filename[i] + filename[3];

 

Jeg trodde jeg kunne gjort noe som dette fordi jeg antok at :

 

filename[0] er fil1

filename[1] er fil2

filename[2] er fil3

filename[3] er out.txt

 

og da kunne legge sammen filename[0] og filename[3] for å kunne få fil1out.txt.

 

Noen som kan komme opp med en alternativ løsning. Og det med en kode?

 

Takk :)

Lenke til kommentar

her er et enkelt ex.:

#include <iostream>
#include <sstream>

using namespace std;

int main(){
 stringstream ss;
 ss << "Lars er " << 26 << " år gammel." << endl;
 cout << ss.str();
 
 return 0;}

 

lars@ibmr52:~/programming/c$ g++ -g -Wall blah.cpp -o blah && ./blah

Lars er 26 år gammel.

 

..ønsker du å gå fra typen std::string til typen char const* kan du bruke `c_str()', slik: `ss.str().c_str()' .. dette er hensiktsmessig der funksjoner forventer c-strenger

Lenke til kommentar
Takk for svaret. Kall meg gjerne dum..

6438155[/snapback]

 

lol - ja, det frister .. :}

(edit: men tror problemet er at du ikke gidder å RTFM'e om C++'s stream-klasser, eller som du selv dro frem C's sprintf .. så får du selv velge hva du vil kalle det)

 

og da kunne legge sammen filename[0] og filename[3] for å kunne få fil1out.txt.

 

*shrug* .. bruk fantasien da .. hvor lang vei er det egentlig fra:

 

stringstream ss;
ss << "Lars er " << 26 << " år gammel." << endl;
cout << ss.str();

 

..til..

 

stringstream ss;
ss << filename[0] << filename[3];
cout << ss.str(); // gir "fil1out.txt"

 

...?

 

edit2:

legge til at orginalt hadde OP fokus på hvordan han skulle generere (sette sammen) filnavnene (strenger) .. av en eller annen grunn kommer ikke dette like klart frem i første post lengre; men ser at det er forsøkt å bruke +

Endret av lnostdal
Lenke til kommentar
Gjest Slettet+19873487

Takk igjen. Skal teste dette når jeg kommer til maskinen. Ser vel ganske lovende ut.

 

Som jeg sa i første posten: Jeg er ikke så stø i programmering. Bare prøver meg frem. Skulle vel tdypt det litt mer. At forklaring måtte til. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...