hallo zusammen:
kann mir jemanden helfen:
ich will einfach (Zeile_B ) als text eingeben und erhalte ich als Ergebnis :
Wert_A1;Wert_A2;Wert_A3
wenn ich Zeile_C eingebe erhalte ich Wert_C1;Wert_C2;Wert_C3 als Ergebnis .
danke.
das ist mein code :
kann mir jemanden helfen:
ich will einfach (Zeile_B ) als text eingeben und erhalte ich als Ergebnis :
Wert_A1;Wert_A2;Wert_A3
wenn ich Zeile_C eingebe erhalte ich Wert_C1;Wert_C2;Wert_C3 als Ergebnis .
danke.
das ist mein code :
Code:
/*********************************************
Kleines Demoprogramm zum Lesen aus einer Textdatei.
Die Spalten sind durch ein Zeichen getreent
***********************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *FName = "\\seiten.txt";
//char *FName = "C:\\Friedrich\\C_Projekte\\Test1\\Test.txt";
char *FNameX = "Test2.txt";
/*Definition der Funktionen*/
int Get_Line_count(char *);
int Get_Line(char *, int, char Sx[256]);
int Get_Spalte(int Spalt_Nr, char Trenn, char *Sx, char Sy[256]);
int Get_Text_from_col(int , char *Tex);
int Get_Col1Txt_ColX(char *, char TrennZ, char *Col1Txt, int, char ColXtxt[256]);
/*++++++++++++++++++++++++++++++++++++++++
Sucht in einer Textdatei (FName) den Text (Col1Txt) in der 1.Spalte
und gibt aus dieser Zeile die Spalte (SpalteNr) zurück.
Die Spalten müssen mit (TrennZ) getrennt sein.
Leerzeichen im Text sind nicht erlaubt!
return : -1 Datei nicht gefunden/geöffnet
0 Text in Spalte nicht gefunden
1 Ok, Text gefunden
Bsp.Textdatei:
Zeile_A;Wert_A1;Wert_A2;Wert_A3
Zeile_B;Wert_B1;Wert_B2;Wert_B3
Zeile_C;Wert_C1;Wert_C2;Wert_C3
Zeile_D;Wert_D1;Wert_D2;Wert_D3
++++++++++++++++++++++++++++++++++++++++*/
int Get_Col1Txt_ColX(char *FName, char TrennZ, char *Col1Txt, int SpalteNr, char ColXtxt[256])
{
FILE *AFile;
int i=0;
int f=0;
char c='?';
char StrX[256];
//Datei öffnen ...
AFile = fopen(FName,"r");
if (AFile==NULL)
{//1
printf("Fehler beim oeffnen von: %s \n",FName);
return (-1);
}//1
else
{//1e
//printf("File is open: %s \n",FName);
// suche nach Zeilenende:'/n' ...
while (c!=EOF)
{//Loop1
c=fgetc(AFile);
StrX[i]=c;
i++;
if (c=='\n')
{//2
//eine Zeile wurde gelesen ...
i=i-1;
StrX[i]='\0';
i=0;
//jetzt die Spalte 1 suchen ...
if (Get_Spalte(1, TrennZ, StrX, ColXtxt)==1)
{//3
//Text aus Spalte 1 vergleichen ...
if (strcmp(Col1Txt,ColXtxt)==0)
{//4
//Text aus Spalte (SpalteNr) holen ...
if (Get_Spalte(SpalteNr, TrennZ, StrX, ColXtxt)==1)
{//5
//fertig, nun raus aus der Routine...
f=1;
break;
}//5
}//4
}//3
}//2
}//Loop1
}//1e
fclose(AFile);
//printf("Close File: %s \n",FName);
return (f);
}
/*++++++++++++++++++++++++++++++++++++++++
Holt eine bestimmte Spalte aus dem String
return: 0 Spalte nicht gefunden
1 Spalte gefunden
++++++++++++++++++++++++++++++++++++++++*/
int Get_Spalte(int Spalt_Nr, char Trenn, char *Sx, char Sy[256])
{
int l=0, f=0;
int i=0;
int Sp=1;
int y=0;
l=strlen(Sx);
//printf("Sx: %s \n",Sx);
//printf("Get Col: %d \n",Spalt_Nr);
//jedes Zeichen im String durchsuchen ...
for (i=0;i<l;i++)
{//1
//printf("SX[%d] = %c == %c \n",i,Sx[i],Trenn);
if (Sx[i]==Trenn)
{//2
//printf("Column %d \n",Sp);
Sp++;
}//2
else
{//2e
if (Sp==Spalt_Nr)
{//3
// gefunden...
Sy[y]=Sx[i];
y++;
f=1;
}//3
}//2e
}//1
if (f>0)
Sy[y]='\0';
else
{
printf("Spalte nicht gefunden!\n");
Sy[0]='\0';
}
return f;
}
/*++++++++++++++++++++++++++++++++++++++++*/
/*gibt die Anzahl der Zeilen in einer Datei zurück*/
/*++++++++++++++++++++++++++++++++++++++++*/
int Get_Line_count(char *FName)
{
FILE *AFile;
int lines=0;
char c='?';
AFile = fopen(FName,"r");
if (AFile==NULL)
{//1
printf("Fehler %s \n",FName);
return (-1);
}//1
else
{//1e
//printf("File is open: %s \n",FName);
// suche nach Zeilenende:'/n' ...
while (c!=EOF)
{//Loop1
c=fgetc(AFile);
if (c=='\n')
{//2
lines++;
}//2
}//Loop1
}//1e
fclose(AFile);
//printf("Close File: %s \n",FName);
return (lines);
}
/*++++++++++++++++++++++++++++++++++++++++*/
/*Holt eine bestimmte Zeile aus der Datei*/
/*++++++++++++++++++++++++++++++++++++++++*/
int Get_Line(char *FName, int Line_Nr, char Sx[256])
{
FILE *AFile;
char c='?';
int i=0;
int lines=0;
AFile = fopen(FName,"r");
if (AFile==NULL)
{//1
printf("Fehler %s \n",FName);
return (-1);
}//1
else
{//1e
//printf("File is open: %s \n",FName);
//printf("Read line number: %d\n",Line_Nr);
// suche nach Zeilenende:'/n' ...
while (c!=EOF)
{//Loop1
c=fgetc(AFile);
Sx[i]=c;
i++;
if (c=='\n')
{//2
i=i-1;
Sx[i]='\0';
lines++;
i=0;
if (lines>=Line_Nr)
{//3
//Die Zeile ist erreicht also raus...
//printf( "Sx:[%s]\n",Sx);
fclose(AFile);
//printf("OK \n");
//printf("Close File: %s \n",FName);
return (1);
}//3
}//2
}//Loop1
}//1e
fclose(AFile);
printf("Not found!\n");
//printf("Close File: %s \n",FName);
return (0);
}
/*++++++++++++++++++++++++++++++++++++++++*/
/*suche nach bestimmten Text in einer Spalte*/
/*++++++++++++++++++++++++++++++++++++++++*/
int Get_Text_from_col(int Acol, char *Tex)
{
int l=0;
int i=0;
char S[256], Sy[256];
l=Get_Line_count(FNameX);
if (l<=0)
return -1;
else
{//1
for (i=0;i<l;i++)
{//2
if (Get_Line(FNameX,i,S)>0)
{//3
if (Get_Spalte(1,';',S,Sy)>0)
{//4
if (strcmp(Sy,Tex)==0)
{//5
if (Get_Spalte(Acol,';',S,Sy)>0)
{//6
printf("Spalte %d: %s\n",Acol,Sy);
break;
}//6
else
printf("Keine Spalte %d\n",Acol);
}//5
else
printf("Text nicht gleich. %s = %s\n",Sy,Tex);
}//4
else
printf("Keine Spalte 1\n");
}//3
else
printf("Keine Zeile.\n");
}//2
}
return 0;
}
/*++++++++++++++++++++++++++++++++++++++++*/
/*Hauptprogramm*/
/*++++++++++++++++++++++++++++++++++++++++*/
int main(int argc, char *argv[])
{
int l=0;
int i=0;
int col=0;
int Stop = 0;
char S[256], Sa[256], c;
//Das Hauptprogramm hat eine endlos-Schnleife, Loop
while (Stop==0)
{//Loop
//Nur so zum Spass S mit '?' füllen ...
for (i=0;i<255;i++)
{ S[i]='?'; }
S[i]='\0';
i=0;
//Wie soll gesucht werden ...
printf("suche nach einem Text in Spalte1? (y)\n");
scanf("%s",&c);
if (c=='y')
{//1
//es wird nach einem Namen in Spalte1 und der Spalte gesucht...
printf("einen Text in Spalte 1 eingeben:\n");
//printf("einen Text in Spalte1 und eine Spaltennummer eingeben:\n"); //siso
scanf ("%d",&col);
//scanf("%s %d",&S,&col);
if (Get_Col1Txt_ColX(FNameX,';',S,col,Sa)==1)
printf("Text in Spalte[%d] aus Zeile[%s] = [%s]\n",col,S,Sa);
else
printf("Text in Spalte[%d] aus Zeile[%s] nicht gefunden!\n",col,S);
//Get_Text_from_col(col,S);
}//1
else
{//1e
//es wird über die Nummer von Zeile und Spalte gesucht...
printf("eine Zeilennummer und eine Spaltennummer eingeben:\n"); // siso
scanf ("%d %d",&l, &col); // siso
if (Get_Line(FNameX,l,S)>0)
{//2
printf("Zeile gefunden:[%s]\n",S);
if (Get_Spalte(col,';',S,Sa)>0)
{//3
printf("Spalte gefunden:[%s]\n",Sa);
}//3
}//2
}//1e
printf("nochmal mit 'n', 'any-key' zum beenden.\n");
scanf("%s",&c);
if (c!='n')
Stop=1;
}//Loop
return 0;
}