Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

C Programm läßt sich kompilieren, bringt bei ausführen aber Fehl

Nobody666 / 3 Antworten / Flachansicht Nickles

Hallo, zusammen


habe anbei ein C-Programm (benutze den GCC), kompilieren läßt es sich ohne Probleme, beim Ausführen, bricht er jedoch mit der MSGBox "Hat einen Fehler verursacht und wird geschlossen" ab


 if (fgets(ParLine, 30, ep) == NULL)  
   exit (0);
  
  pszEndOffLine = ParLine + strlen(ParLine);
  pszGroup = strtok(ParLine, GroupDataSeparator);
  pszRest = pszGroup + strlen(pszGroup) +1;  //diese Zeile verusacht anscheinend den Fehler


Hier die Variablendeklaration: 


 char *pszGroup, *pszRest;
 char *pszEndOffLine;
 char GroupDataSeparator[]="=,\n";
 
Programm soll aus einer Date die z.B so aufgebaut ist


Adr=45;


abc=21;


adsf=13a39


die Werte hinter dem = auslesen


if(ergebnis = strcmp("abc", pszGroup) == 0) 
  {
   strcpy(abc, pszRest);
   i_abc = atoi(abc);
  } 
 


HILFE!!!!

bei Antwort benachrichtigen
vergisses Nobody666 „C Programm läßt sich kompilieren, bringt bei ausführen aber Fehl“
Optionen

Hi Nobody,

lies Dir mal die Beschreibung von strtok() nochmal genauer durch.
Beim ersten Aufruf übergibst Du den zu durchsuchenden String und einen
String mit dem Tokenseparator.
In den folgenden Aufrufen übergibst Du (normalerweise in einer Schleife)
als 1. Parameter NULL, bis kein weiteres Token mehr gefunden wird.

Beispiel:
#include
#include

int main(int argc, char *argv[])
{
char cBuf[128]; // Muss gross genug für eine Zeile sein
char *cLf;
int found=0;
FILE *ep;

//File Oeffnen nicht vergessen ;-)

while(fgets(cBuf,127,ep)!=NULL)
{
if((cLf=strtok(cBuf,"="))&&(!strcmp(cLf,"abc")))
{
found=1;
if(cLf=strtok(NULL,"=")) printf("abc=%s\n",cLf);
else printf("abc gefunden, aber kein Wert\n");
}
if(found==0) printf("abc nicht gefunden\n");

//File Schliessen nicht vergessen ;-)

return(0);
}


Gruss, vergisses

bei Antwort benachrichtigen
danke Nobody666