Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

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

Nobody666 / 3 Antworten / Baumansicht 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
pshuber Nobody666 „C Programm läßt sich kompilieren, bringt bei ausführen aber Fehl“
Optionen

> pszRest = pszGroup + strlen(pszGroup) +1; //diese Zeile verusacht anscheinend den Fehler

Bin auch kein C Profi, aber so wies aussieht, willst du Integers (+strlen + 1) zu Zeigern addieren.

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
Nobody666 Nachtrag zu: „C Programm läßt sich kompilieren, bringt bei ausführen aber Fehl“
Optionen

Super, dankeschööööööön!!!!

bei Antwort benachrichtigen