Frage:
Hallo,
ich versuche seit ein paar Tage das Problem zu lösen, allerdings vergeblich. Deshalb Frage ich um einen Tipp.
Ich möchte eine Textdatei durchsuchen, und nur jene Zeilen Ausgeben wo die ID Nummer unterschiedlich ist. -> das funktioniert.
ID ist eine Eindeutige Nummer anhand man die jeweiligen Daten zuordnen kann. Das Problem ist dass ab und zu der Namen in einer Zeile fehlt. Ich möchte aber bei jeder Konsolen Ausgabe den Namen haben. Aber das Funktioniert aktuell nicht da z.b eine Zeile keinen Namen hat.
Aktuell wird da "Test" ausgegeben. Ich möchte nun dass anstatt von "Test" der nachfolgende Name hineingeschrieben wird.
Aber da müsste ich ja dann immer eine Zeile vorspringen. Ich komme nicht drauf wie ich das lösen kann.
Aktuell ist die Ausgabe so:
ID Name
10000 OPTIMUM MANUFACTURING
12781 LACLEDE GAS CO
13901 Test
13902 Test
Wunsch Ausgabe ist so:
ID Name
10000 OPTIMUM MANUFACTURING
12781 LACLEDE GAS CO
13901 HILIP MORRIS INC
13902 Water INC
https://onlinegdb.com/gOZ7UMMNu
Code:
/******************************************************************************
*******************************************************************************/
#include <stdio.h>
#include <string.h>
int main ()
{
char puffer[1200], aa[100], aa_vorher[100], bb[100], cc[100], dd[100], ee[100], ff[100], ff_vorher[100];
int count_strlen = 0;
int count_anzahlLeerzeichen = 0;
int countZahlen=0;
FILE *f=fopen("/tmp/abc123", "w");
fputs("ID; Datum; Ticker1;Ticker2 ; Ticker3 ; Name ;\n"
"10000; 07/01/1986; 68391610; ; 8391610 ; OPTIMUM MANUFACTURING ;\n"
"12781; 30/11/1970; 84857L10; ; 0558810 ; LACLEDE GAS CO ;\n"
"13901; 27/05/1955; 02209S10; ; ; ;\n"
"13901; 31/05/1955; 02209S10; ; ; HILIP MORRIS INC ;\n"
"13901; 01/06/1955; 02209S10; ; ; HILIP MORRIS INC ;\n"
"13901; 02/06/1955; 02209S10; ; ; HILIP MORRIS INC ;\n"
"13901; 03/06/1955; 02209S10; ; ; HILIP MORRIS INC ;\n"
"13902; 03/06/1955; 02209S10; ; ; ;\n"
"13902; 03/06/1955; 02209S10; ; ; Water INC ;\n"
"13902; 03/06/1955; 02209S10; ; ; Water INC ;\n"
,f);
fclose(f);
f=fopen("/tmp/abc123","r");
if (f == NULL)
{
printf ("Fehler\n");
}
while (fgets (puffer, 1200, f))
{
sscanf (puffer, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];\n", aa, bb, cc, dd, ee, ff);
// Länge vom char Array ff ermitteln
{
count_strlen = strlen (ff);
}
// Wenn sich aa im vergleich zu aa_vorher verändert hat dann wird mit der for-Schleife überprüft
//ob das Array ff mehr als 35 Leerzeichen enthält.
if (strcmp (aa, aa_vorher))
{
for (int i = 0; ff[i]; i++)
{
// Hier werden die Anzahl an Leerzeichen in ff überprüft
if (ff[i] == ' ')
{
count_anzahlLeerzeichen++;
}
// Wenn mehr als 35 Leerzeichen in ff vorhanden sind, ist das ff array leer.
// Hier sollte nun nicht "Test" hineingeschrieben werden sondern der string ff aus der nachfolgenden Zeile
if (count_anzahlLeerzeichen > 35)
{
strcpy (ff, " Test");
}
}
printf ("%s %s\n",aa, ff);
count_anzahlLeerzeichen = 0;
// Hier Versuche ich das vorherige ff array abzuspeichern. Aber ich glaube das bringt mir nichts
strcpy (ff_vorher, ff);
}
strcpy (aa_vorher, aa);
}
fclose (f);
return 0;
}