Zum Inhalt springen

Textdatei lesen


bigpoint

Empfohlene Beiträge

Hi,

einfach mal so aus dem Bauch heraus:



#include <stdio.h>

FILE *datei1, *datei2;
char text[100];

main()
{
datei1 = fopen("c:\\datei1.txt","r"); // r steht für nur lesen
if (datei1 == NULL)
{
printf ("Konnte datei1 nicht öffnen!");
return 0;
}
datei2 = fopen ("c:\\einordner\\datei2.dat","a+"); //a+ steht für lesen und Daten anfügen
if (datei2 == NULL)
{
//konnte datei nicht öffnen oder erstellen
}
while (!feof(datei1))//solange Dateiende nicht erreicht
{
fscanf(datei1,"%s",&text);//wort aus datei lesen
fprintf(datei2,"%s",text);//wort in datei schreiben
}
fclose(datei1);
fclose(datei2); //Dateien schließen
return 0;
}
[/PHP]

Gruß

wasweißich

Link zu diesem Kommentar
Auf anderen Seiten teilen

CStdioFile datei1;
if( !datei1.Open( "c:\\datei1.txt", CFile::modeRead ) ) {
MessageBox( "Konnte datei1 nicht öffnen!" );
return;
}
CStdioFile datei2;
if( !datei2.Open( "c:\\datei2.txt", CFile::modeWrite | CFile::modeCreate ) ) {
MessageBox( "Konnte datei2 nicht öffnen!" );
return;
}
CString strZeile;
while( datei1.ReadString( strZeile ) ) {
datei2.WriteString( strZeile );
}
datei1.Close();
datei2.Close();
[/CODE]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von wasweißich

Hi,

einfach mal so aus dem Bauch heraus:



#include <stdio.h>

FILE *datei1, *datei2;
char text[100];

main()
{
datei1 = fopen("c:\\datei1.txt","r"); // r steht für nur lesen
if (datei1 == NULL)
{
printf ("Konnte datei1 nicht öffnen!");
return 0;
}
datei2 = fopen ("c:\\einordner\\datei2.dat","a+"); //a+ steht für lesen und Daten anfügen
if (datei2 == NULL)
{
//konnte datei nicht öffnen oder erstellen
}
while (!feof(datei1))//solange Dateiende nicht erreicht
{
fscanf(datei1,"%s",&text);//wort aus datei lesen
fprintf(datei2,"%s",text);//wort in datei schreiben
}
fclose(datei1);
fclose(datei2); //Dateien schließen
return 0;
}
[/PHP]

Gruß

wasweißich [/b]

und wie kann ich den Pfad manuel eingeben so geht nicht:

printf("Bitte geben Sie den Pfad ein\n");

scanf("%s",&pfad);

datei1 = fopen("pfad","r"); /

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von 007ski

printf("Bitte geben Sie den Pfad ein\n");

scanf("%s",&pfad);

datei1 = fopen("pfad","r"); /

1. Wenn pfad ein char-Array oder char* ist, dann darfst Du bei scanf nicht die Adresse angeben.

2. Wenn Du bei fopen pfad in Anführungszeichen setzt, hält der Compiler das für ein Literal, nicht für eine Variable.

Also:

scanf("%s", pfad);

datei1 = fopen( pfad, "r");

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von 007ski

und was mache ich mit lerzeillen zB.:

JUSPEPHI16196666500W 0002790 02705 JUSP

Du solltest uns wirklich mal sagen, was genau Du prüfen willst. Niemand wird anhand dieser Zeile erkennen können, was hier relevante Daten sind.

Haben die Zeilen einen einheitlichen Aufbau, durch feste Feldgrößen, Delimiter oder Schlüsselworte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja gerne und sorry :

Also ich will erste 15 zahlen auslesen

JUSPEPHI16196666500W 0002790 02705 JUSP

Dann 17-20 auslesen

JUSPEPHI16196666500W 0002790 02705 JUSP

Dann 22-24 und dann 26-34 dann in eine Datei speichern und denn Rest

in eine andere Datei speichern, dass will ich machen aber ob es mir gelange ist

die andere Sache ;-(

Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

JUSPEPHI16196666500W  0002790  02705  JUSP 

123456789012345678901234567890123456789012 (Abzähl-Zeile)

Habe ich das so richtig verstanden?

1 bis 15: JUSPEPHI1619666

17 bis 20: 500W

22 bis 24: [Leerzeichen]00

26 bis 34: 2790[Leerzeichen][Leerzeichen]027

Rest: 05[Leerzeichen][Leerzeichen]JUSP

Ja perfekt ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

CStdioFile LesenDatei, SchreibenDatei, RestDatei;
LesenDatei.Open( "c:\\datei1.txt", CFile::modeRead );
SchreibenDatei.Open( "c:\\datei2.txt", CFile::modeWrite | CFile::modeCreate );
RestDatei.Open( "c:\\datei3.txt", CFile::modeWrite | CFile::modeCreate );
CString strZeile;
while( LesenDatei.ReadString( strZeile ) ) {
CString strDaten = strZeile.Left( 15 );
strDaten += strZeile.Mid( 16, 4 );
strDaten += strZeile.Mid( 21, 3 );
strDaten += strZeile.Mid( 25, 9 );
SchreibenDatei.WriteString( strDaten );

CString strRest = strZeile.Mid( 34 );
RestDatei.WriteString( strRest );
}
LesenDatei.Close();
SchreibenDatei.Close();
RestDatei.Close();[/CODE]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...