M
Hallo!
Dankeschön Euch allen!
Hier ist mal meine Lösung:
(Vielleicht kann's mal einer nutzen...)
//usage: string_to_double(ganzer_string, suchstring)
#include <stdio.h>
#include <ctype.h>
#include "header.h"
//double string_to_double(char *in, char *suchstring);
double string_to_double(char *in, char *suchstring)
{
char *ptr_quelle;
int pos=0 , i=0;
char string[32]; //es kann eine Zahl mit 32 stellen ausgelesen werden
char *p = string;
double value;
ptr_quelle=strstr(in, suchstring);
if(ptr_quelle!=0)
{//habe string gefunden :-)
//pos hinter gefundenem String
ptr_quelle=ptr_quelle+strlen(suchstring);
//blende Leerzeichen aus
while (*ptr_quelle == ' ') *ptr_quelle++;
// Extrahiere die zahl nach dem suchstring
// bis keine Ziffer mehr kommt
while (isdigit (*ptr_quelle) || *ptr_quelle == '.'\
|| *ptr_quelle == '+'|| *ptr_quelle == '-')
//kopiere chars nach string
*p++ = *ptr_quelle++;
// Wandle string in einen double-Wert um
// und gebe diesen dann zurück an den Aufrufer
sscanf (string, "%lf", &value);
return value;
}
// Nichts gefunden?
return 0.0;
}
/*
int main()
{
FILE *pfile_src;
char orig_zeile[80], kopie_zeile[80];
double d=0.0;
//oeffne Quelldatei zum Lesen
pfile_src = fopen("str_d600.tap","r");
if (!pfile_src)
{
printf("konnte %s nicht oeffnen!!!\n","d600.tap");
printf("Programm wird beendet\n");
system("PAUSE");
exit(0);
}
fgets(orig_zeile,80,pfile_src); //lese neue Zeile
strcpy(kopie_zeile,orig_zeile); //Originalzeile sichern
//printf ("%.3lf\n", string_to_double("N72G41ZI+334.991D600","X"));
printf ("%.3lf\n", string_to_double(kopie_zeile,"X"));
d= string_to_float(kopie_zeile,"X");
printf("%.3lf\n",d);
system("Pause");
}
*/
Bis demnächst
Krishna