Programmieren - alles kontrollieren 4.935 Themen, 20.621 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
mr.escape Nobody666 „Sorry, funktioniert! Danke!!!! was bedeutet eigentlich 0 genau, beim Compilieren...“
Optionen

Die korrekte form ist "prozent, eckige klammer auf, accent circonflex, backslash, null, eckige klammer zu". Das problem entsteht hier beim posting, wenn man diese sonderzeichen nicht richtig angibt. Ausserdem ist die vorschau diesbezüglich ungenau.
Die bedeutung ist die aufforderung an scanf, alles bis zum ersten null-charackter einzulesen, also das, was bei c-strings üblich ist. Wenn ich es mir recht überlege ist es eigentlich überflüssig und sollte durch z.b.
strcpy(argv[i]+2, File_name);
ersetzt werden. Hatte mal eine variante, die nicht auf den null-charakter enden musste und dort war es sinnvoll. Strcpy() ist hier aber besser.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen