strncpy() & casting problem



  • Hallo alle zusammen! 👍
    bei der verwendung der Funktion strncopy habe mich gegen diese konvertierungs Probleme gestoßen. Der Fehler habe ich als Kommentar geschrieben.
    Wenn jemand mir dabei helfen kann wäre sehr net 😉

    ...
         char *loc;
         size_t n = 4;
         char Rsrv [10][5];
         char quelle[] = "abcdefghijk_lmnopqrstuvwxyz";
    
         /* Suche durchführen. */
    
         loc = strchr(quelle, ch);
    
         /*Kopieren*/
    	 printf("Rsrv vor Aufruf von strncpy = %s\n", Rsrv);
    
         strncpy(Rsrv, loc, n);//Der Fehler lautet:
              //Konvertierung des Parameters 1 von 'char [10][5]'
    	 //in 'char*' nicht möglich
    	 //Die Typen auf die verwiesen wird , sind nicht 
    	 //verwandt; die konvertierung erfordert einen reinterpret_cast-Operator
    	 //oder eine Typumwandelung im C- oder Funktionsformat
    
         printf("Rsrv nach Aufruf von strncpy = %s\n", Rsrv);
         return(0);
     }
    


  • Du hast ein fundamentales Zeigerproblem. ein [][] ist im Prinzip ein ** , allerdings arbeiten Zeichenketten mit char* und nicht mit char**. Von daher musst du deine Zeiger noch auf irgendeine Weise dereferensieren.



  • strncpy(Rsrv[ZAHL], loc, n);
    

    Wobei ZAHL eine Zahl von 0 bis 9 sein muss.

    strcpy() verlangt einen char*, du übergibst ihm aber einen char** (wegen der 2 Dimensionen von Rsrv).

    Edit: Bekackte 3 Sekunden 😕


Anmelden zum Antworten