strcmp Frage!!



  • ach, sorry.

    hab da einen codeteil unabsichtlich gelöscht.

    das steht noch vor strcmp:

    fscanf(input,"%s",&type);
      printf("PGM_ID: %s\n",&type);
    

    mfg max



  • Es ist

    fscanf(input,"%s",type); 
     printf("PGM_ID: %s\n",type);
    

    außerdem sehe ich gerade, dass du für type keinen Speicher angelegt hast -> char type[100];



  • ...und dann brauchst auch nicht 'strcmp' doppelt aufzurufem:

    if (strcmp( type, "P5"))
       printf ("Fehler beim vergleichen");  // != 0
    else
       printf ("funktioniert ja");          // == 0
    


  • also der Code sieht jetz so aus, aber da tut sich noch immer nichts.

    mfg max

    // picture.c
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    //------------------------------------------------------------------------
    // read header & verify that it is a PGM File. 
    char *getPGMFile(FILE* input)
    {
      char type[100];
      char *P2 = "P2";
      char *P5 = "P5";
    
      fscanf(input,"%s",type);
      printf("PGM_ID: %s\n",type); 
    
      if (strcmp( type, "P5") != 0)
    
        printf ("Fehler beim vergleichen"); 
    
      else
    
        printf ("funktioniert ja"); 
    
      return 0;
    }
    
    //------------------------------------------------------------------------
    // MAIN PROGRAM
    int main(int argc, char *argv[])
    {
    
        FILE *input = stdin;
        getPGMFile(input);
        printf("fertig");
    
      return 0;
    
    }
    


  • setz mal ein

    system("pause")
    

    vor das return 0; in main() (ich weiss ja, da gibts schönere möglichkeiten ... )



  • Also bei mir tut sich da gar nix mit diesem "pause" Befehl.

    mfg max



  • Also irgendwie hab ich da einen totalen Mist gebaut jetzt.
    Also wenn ich in der commandline noch die Adresse einer Datei eingeben will, und enter drücke, ist ihm das egal. Aber ich kann darauf etwas eingeben, und das wird dann als string eingelesen und gleich wieder ausgegeben.
    Ich versteh da schon langsam gar nix mehr. Hat nämlich schon einmal funktioniert.

    mfg max



  • code ? ich sehe nicht dass du die commandolines abfängst



  • so jetz gehts wieder. aber wenn ich zb mehr als zwei Parameter eingebe, dann ist doch argc > 2, oder? aber er gibt das printf dann nicht aus!
    Sorry das ich ein bissl vom Thema abschweife.

    mfg max

    int main(int argc, char *argv[])
    {
    
      char* data = NULL;
      int error_code = 0;
    
      if (argc > 2)
        printf("zu viele Parameter");
      else
      {
    
        FILE *input = stdin;
        if (argc == 2)
        {
          if ((input = fopen(argv[1],"rb")) == NULL)
          {
            printf(" Datei ist leer");
          }
        }
    
        if(input)
        {
          if((data = getPGMFile(input)))      
    
            printf("eingelesen");
            else
              error_code = 3; 
          }
    
          free(data);
          fclose(input);
        }
    
      return 0;
    
    }
    


  • Schau dir halt mal den Wert von argc an!


Anmelden zum Antworten