unverträglicheTypen bei Zuweisung an Typ char[256] von Typ *char



  • habe folgende fehlermeldung und weiß nicht woran das liegen kann. habt ihr eine idee?

    das ist das programm.
    parameter die übergeben werden ist in dem fall nur prozess wichtig, welches ein int mit der prozess id ist.

    für die zeile 16 wird folgender fehler ausgeworfen:
    unverträglicheTypen bei Zuweisung an Typ char[256] von Typ *char

    woran liegt das?

    void list_dir(DIR *dp, int sortierung,int anzahlProzess, int prozess)
    {
    
      int count,vgl;
      count= vgl=0;
      struct dirent *ep;
      unsigned int i;
      char buf[5];
    
      sortierung =0;
      //Ausgabe von nur einem Prozess
      if(prozess>0)
      {
       sprintf(buf,"%d",prozess);
       ep=readdir(dp);
       ep->d_name=buf;
       print_stat(ep->d_name);
        return;
      }
    
      //Ausgabe aller Prozesse
      while (((ep = readdir(dp)) != NULL))
      { 
        vgl=(anzahlProzess==count);
        if (ep->d_name == NULL)
        { 
          continue;
        }
    
        for(i = 0; isdigit(ep->d_name[i]); i++)
        {
         // count++;
        }
        /* digits only? */
        if (i == strlen(ep->d_name))
        {
          print_stat(ep->d_name);
          count++;
        }
        if(vgl==1)return;
    
      }
    }
    


  • Arrays kann man in C nicht mit dem Gleichheitszeichen zuweisen.
    Absolute Grundlagen in C. 🙄
    Kapitel Strings/Zeichenketten nochmal durcharbeiten.



  • Ich frage mich gerade was passiert, wenn eine Prozessnummer > INT_MAX übergeben wird:
    -> exceptional condition -> undefined behavour.
    Im besten Fall wird int prozess negativ und nicht gelistet.
    Ansonsten ist manches andere denkbar
    https://www.owasp.org/index.php/Integer_overflow
    http://en.wikipedia.org/wiki/Integer_overflow
    http://www.integeroverflow.com/


Anmelden zum Antworten