Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Ausführen von C-Programm funktioniert nicht

Nobody666 / 16 Antworten / Flachansicht Nickles

Hallo,


habe hier einen kleinen Ausschnitt von einem C-Programm. Will als Parameter eine Datei übergeben in Form -dxxx  xxx steht hierbei für den Dateinamen, sollte aber so sein, dass geprüft wird ob ein - steht, danach ob ein d steht und ich dann den Dateinamen habe, den ich später im Programm einlesen muß. Compilieren zeigt keinen Fehler, beim Ausführen mit den Parametern -dabcd zum Beispiel, bricht er mit der Fehlermeldung exe hat Fehler verursacht und wird abgebrochen ab. Wer kann helfen????????


 int main (int argc, char *argv[] ) {
   
   //Parameteruebergabe bei Programmaufruf
 for (i=1; i<argc;i++)
  {
  if ((argv[i] [0]) == '-')
   {
   switch ((argv[i]) [1])
    {
        case 'd': 
    if(sscanf(argv[i]+2,"%c",&Byte_name) !=1)
     FileSpecified=0;    
    else           
     FileSpecified=1;
     for (int j=2;int halt=1;j++)
      {
      sscanf(argv[i]+j,"%c",&Byte_name);
      Byte_name1=Byte_name;
      if(Byte_name1 !='-')
       {
        Datei_name[j-2]=Byte_name1;
       }
       else
       {
        halt=1;
        Datei_name[j-3]='\0';
        break;
       }
      }
      strcpy(File_name,Datei_name);
      strcat(File_name,".lb0");;
      break;
          
      }
     }
    }


 


will danach die Datei einlesen mit:


 if ( (werte = fopen(File_name,"rb"))==NULL)
 {
  printf("Fehler beim Lesen der Datei %s",File_name);
  exit(0);
 }
 else
  { 
  ...........                                      kann aber leider noch nicht überpruefen, ob dass dann auch funktioniert, da ich ja nicht soweit komme.


 


mfg


Nobody

bei Antwort benachrichtigen
Nobody666 Nachtrag zu: „Servus, nun kommt doch ein neues Problem. Programm läuft unter gcc kompiliert...“
Optionen

sorry,
Programmausschnitt vergessen:
int main (int argc, char *argv[] ) {
for (i=1; i if ((argv[i] [0]) == '-') {
switch ((argv[i]) [1]) {
case 'd':
if(argv[i][2]) {
sscanf(&argv[i][2], "%[^\0]", File_name);
strcat(File_name,".lb0");
FileSpecified=1;
}
break;
}
}
}



if(strcmp(File_name,"1419101.lb0")==0) {
Anzahl=1;}

if(strcmp(File_name,"1409101.lb0")==0) {
Anzahl=2; }

NextFirstSerialNumber=SerialNumber+1; //naechste Serialnumber
NextSecondSerialNumber=SerialNumber+2; //uebernaechste Serialnumber

if ((fp=fopen("serial.dat","w"))==NULL)
exit(0);
if(!StartingNumberSpecified)
{
fprintf(fp,"T05:Es wurde keine Seriennummer gelesen!\n"); //Sicherstellung, dass SerialNumber gelesen wurde
exit(0);
}
//einlesen der lb0 Datei zur Pruefsummenberechnung
if ( (werte = fopen(File_name,"rb"))==NULL) //Pointer auf Datei wird in werte gespeichert
{
fprintf(fp,"T05:Fehler beim Lesen der Datei %s",File_name);
exit(0);
}
else
{ ......

bei Antwort benachrichtigen