Avatar billede seco Nybegynder
26. april 2002 - 17:56 Der er 4 kommentarer og
1 løsning

læs en fil ord for ord

Hej

Jeg skal lave et program som læser en fil ord for ord og skriver ordene ud så der kommer et ord på hver linje,min kode skriver bogstaver på hver linje jeg kan ikke få det til at skrive ord på hver linje, håber i kan hjælpe.


#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>

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

char filnavn [100] ; // * ="c:\\autoexec.bat";
char filnavngem [100] ; // * ="c:\\autoexec.kop";
char karak;

    cout << "Indtast filnavn paa filen der skal kopierers" << endl;


    ifstream fin (filnavn, ios::in);// åbner filen filnavn

    if (!fin)
{
    cout << "cannot open file.\n";
    return 1;
}

 
    cout << "Indtast filnavn paa filen der skal kopierers til" << endl;

    ofstream fout (filnavngem);// åbner filen filnavngem

if (!fout)
{
    cout << "cannot open file.\n";
    return 1;
}




while (fin.peek()!=EOF) // så længe den ikke er EOF
{
  fin.get(karak); // læst karak ind..
  fout.put(karak); // skriver karak til filen.
  cout << karak << endl; // skriver den ud på skærmen...

}
fin.close();
fout.close();
}
Avatar billede laffe Nybegynder
28. april 2002 - 17:33 #1
indlæs karak i en buffer. når du møder et mellemrum eller CR eller EOF, så skriver du buffer ud. Derved fpr du skrevet hvert ord ud på en linie.


int i=0;
char Buffer[512];
while (fin.peek()!=EOF) // så længe den ikke er EOF
{
 
  fin.get(karak); // læst karak ind..
  if (karak != ' ' && karak !='\n' && karak != 0)
  {
    Buffer[i++] = karak;
  }else
  {
    fout.put(Buffer);  // udskriv hele linien
    cout << Buffer << endl; // skriver den ud på skærmen...
    i = 0;
  }
}
Avatar billede seco Nybegynder
28. april 2002 - 20:23 #2
Hej laffe buffer skriver meget andet ud til skærmen end den skal det første ore skriver den to gange, den skriver hjerter og hovder ud , resten af skermen er fylt med [|[|[|[|og hvis det forgårende ord er på 3 bogstaver og det neste på 2 så kommer det 3 bogstav med fra det forgådende og så har jeg en fejl ved fout.put(Buffer).Håber at du eller nogle andre kan hjælpe med det. ;-)
Jeg bruger visual c++.

#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>

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

char filnavn [100] ; // * ="c:\autoexec.bat";
char filnavngem [100] ; // * ="c:\autoexec.kop";
char karak;
int i=0;
char Buffer[512];

    cout << "Indtast filnavn paa filen der skal kopierers" << endl;
    cin.getline (filnavn,100);
    ifstream fin (filnavn, ios::in);// åbner filen filnavn

    if (!fin)
    {
        cout << "cannot open file.n";
        return 1;
    }

 
    cout << "Indtast filnavn paa filen der skal kopierers til" << endl;
    cin.getline (filnavngem,100);
    ofstream fout (filnavngem);// åbner filen filnavngem

    if (!fout)
    {
        cout << "cannot open file.n";
        return 1;
    }



    while (fin.peek()!=EOF) // så længe den ikke er EOF
    {
 
            fin.get(karak); // læst karak ind..

        if (karak != ' ' && karak !='\n' && karak != 0)
        {
            Buffer[i++] = karak;
        }    
        else
        {
            fout.put(Buffer);  // cannot convert parameter 1 from 'char [512]' to 'char' udskriv hele linien
            cout << Buffer << endl; // skriver den ud på skærmen...
            i = 0;
        }

    }
fin.close();
fout.close();
}
Avatar billede chries Nybegynder
28. april 2002 - 20:38 #3
Her er mit foreslag:
input test.txt =
 
Hej med dig.
Ost linie 2, hej
med mig

output:
input word: Hej
input word: med
input word: dig.
input word: Ost
input word: linie
input word: 2,
input word: hej
input word: med
input word: mig


program:

#include "fstream.h"
#include "iostream.h"

int _tmain(int argc, _TCHAR* argv[])
{
    char input_file[] = "c:\\test.txt";
    char output_file[] = "c:\\test_out.txt";

    fstream in, out;
   
    in.open( input_file, ios::in|ios::nocreate );

    if( !in )
    {
        cout << "could not open input file" << endl;
        return 1;
    }

    out.open( output_file, ios::out );

    if( !out )
    {
        cout << "could not open output file" << endl;
        return 1;
    }

    char word[2048];
    in >> word;

    while( !in.eof() )
    {
        out << word << endl;
        cout << "input word: " << word << endl;

        in >> word;
    }

    in.close();
    out.close();

    return 0;
}
Avatar billede seco Nybegynder
28. april 2002 - 21:19 #4
Hej chries det funger efter at jeg havde erstattet int _tmain(int argc, _TCHAR* argv[]) med int main(int argc, char *argv[])men jeg ved ikke hvorfor, ved du det ?
Tak for hjælpen :-)
Avatar billede chries Nybegynder
29. april 2002 - 09:37 #5
fordi jeg bruger visual .net c++ ... wizarden laver _tmain istedet for main
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester