Strings aus Datei heraussaugen und in Tabelle schreiben

ahamm

Mitglied
Hallo @ all

Ich habe ein Problem und zwar möchte ich ich aus TXT Dateien (so 3000 Stück) aus einer speziellen Zeile, Zahlen in eine Doc oder noch viel besser in eine Xls Datei schreiben. In welcher Sprache geht das am besten bzw, gibt es da vorgefertigte Code-Stücke oder Prgramme..


Danke im voraus
 
Zur Ausgabe verwendest du am besten eine csv-Datei; dann hast du textbasierte Dateien sowohl als Eingabe als auch als Ausgabe; und der Import in eine Tabellenkalkulition ist dann simpel.
Für das Durchsuchen der TXT-Dateien und das daraus folgende Erstellen der csv-Datei verwendest du am besten ein AWK-Skript. Das ist kurz, unkompliziert, schnell erstellt und leicht zu debuggen.
Der AWK ist ursprünglich ein UNIX-Tool, das speziell für solche Aufgaben programmiert wurde. Ein gute OpenSource-Implementierung für Windows ist der Gawk.
 
Klar, geh in den "Jobangebote"-Bereich und schreib dort, was du anzubieten hast dafür, dass es dir jemand anderes macht.
 
Ein einfaches Nein hätte mir auch gereicht.


Gut ich habe mir nun Dev C geholt und wollte mal versuchen damit eine Datei zu öffnen.
mit dem Befehl

FILE * fp;
fp = fopen ("C:\Programme\Projekt\report.TXT", "r");


geht aber irgendwie nicht.
wo ist denn mein Fehler?

Danke
 
Ein einfaches Nein hätte mir auch gereicht.


Gut ich habe mir nun Dev C geholt und wollte mal versuchen damit eine Datei zu öffnen.
mit dem Befehl

FILE * fp;
fp = fopen ("C:\Programme\Projekt\report.TXT", "r");


geht aber irgendwie nicht.
wo ist denn mein Fehler?
Ein Backslash ist ein Spezialzeichen innerhalb von Stringliteralen. Den mußt du mit einem Backslash entwerten, d.h. du mußt Backslashes verdoppeln.

Evlt. solltest du nochmal genau sagen was du machen willst. Was heißt denn "eine bestimmte Zeile"?

Soetwas kann man aber grundsätzlich relativ einfach mit einem Shell- bzw. Batchskript und grep oder sed bzw. findstr machen.

Gruß
 
Ja du musst wie schon gesagt 2 mal "\" machen, also z.B. C:\\Programme\\...

Dann gehts, und dann kannst du über schleifen den Text einlesen und speichern.

Zum Beispiel:

while(fp!=EOF){
....
-- Text in ein Array oder Sring einlesen --
....
}

Und da könntest du dann z.B. auf bestimmte Zeichen überprüfen, die deine Zeile enthält, und dann nur diese Einlesen.

Mfg Dragonate
 
Danke für die vielen Antworten, also ich habe eine txt Datei in der auf der 15 ten bis 26 Zeile Werte stehen die mich interessieren. diese möchte ich in eine andere Datei kopieren und alle anderen 5000 Werte aus den 5000 txt Dateien auch, um dann einen Mittelwert über alle zu bilden. Die Werte sind immer auf der gleichen Zeile und ich suche dann immer nach Zeilenumbrüchen um auf die richtige Zeile zu kommen.

hier ist mein Code

HTML:
int main(int argc, char *argv[])
{
     FILE * fp;
     FILE * fp2;
  fp2 = fopen ("C:/test.txt", "a");
  fp = fopen ("C:/Programme/dat/der/ip0057.txt", "r");
 
  char inhalt[2301] = { '\\0' };
   
   fread(inhalt, 2300, 1, fp);
   
   int j ;
   int k = 0; 
   for (j = 1 ; j <= 2300 , j++)
   { if (inhalt[j] == "\n")
   { k++;}
   if (k == 3)
   {if (inhalt [j] == "%")
   {fwrite(inhalt[566], 454 , 1, fp2);
       }
         }
       
       }
   
   
   
   
  // fwrite(inhalt, sizeof(inhalt), 1, fp2);
   fclose(fp2);


   if (fp == NULL) {
        int i;
   for ( i = 1 ; i <= 10000 ; i++ )    
     { printf("nejjjjjjjjjjjj!\n");     
} } else {
            int i;
   for ( i = 1 ; i <= 10000 ; i++ )    
     { printf("joooooooo!  ");  
      }   
      return 1;
   }
	
  return 0;
}

Weiss Jemand wo der Fehler ist...
Danke
 
Danke für die vielen Antworten, also ich habe eine txt Datei in der auf der 15 ten bis 26 Zeile Werte stehen die mich interessieren. diese möchte ich in eine andere Datei kopieren
Wie gesagt. Warum willst du dafür C verwenden?

Mit folgendem sed (http://gnuwin32.sourceforge.net/packages/sed.htm) Aufruf kriegst du die Zeilen auch:
Code:
sed -ne '15,26p' datei1.csv >> resultat.csv

Ansonsten, schau dir die fgets Funktion an, mit der kannst du zeilenweise einlesen.

Gruß

PS: Wieso prüfst du am Ende ob fp == NULL ist? Es gibt nur eine Stelle im Programm wo du fp änderst, und das ist beim fopen Aufruf. Wenn fp da NULL gewesen wäre, wäre dein Programm längst abgestürzt.

PPS: Und versuch mal deinen Code ordentlich einzurücken. Das ist ziemlich unleserlich.

PPPS: :) Man kann Strings in C nicht mit dem == Operator vergleichen. Beachte die Warnungen deines Compilers dazu (Warnungen einschalten!).

C:
if (inhalt[j] == '\n') {
  ...
}
 
Zuletzt bearbeitet:
Zurück