strcpy memcpy motivo per l'ordine dei parametri

4

Rispondendo a una domanda sull'ordine dei parametri, mi ha colpito il fatto che strcpy (e famiglia) sono nel verso sbagliato. La copia dovrebbe essere src - > destinazione.

Esiste un motivo storico o architettonico per l'ordine dest, src in queste funzioni "C"? Qualcosa che ha a che fare con l'ottimizzazione dello stack sul PDP-8 o qualcosa del genere?

    
posta Martin Beckett 08.11.2011 - 21:58
fonte

3 risposte

5

Pensa a un'operazione di assegnazione.

A = B;  //copies the contents of B into A

Stesso ordine quando si usa memcpy per copiare un array.

memcpy(A, B, sizeof(B));  //copies the contents of B into A
    
risposta data 09.11.2011 - 03:25
fonte
2

Mettere il bersaglio come secondo argomento sarebbe incoerente con altre funzioni che scrivono cose alle stringhe e hanno il bersaglio nel primo argomento. memset(3) e sprintf(3) vengono in mente.

    
risposta data 09.11.2011 - 04:28
fonte
0

Non penso che nessuno saprà per certo la vera risposta, anche se molti speculeranno il perché, e ora non possiamo più chiedere a Dennis Ritchie, la risposta definitiva probabilmente non è possibile. (Qualcuno può fornire una risposta basata sull'evidenza?)

Tuttavia, credo che tu abbia affermato che l'ordine è "sbagliato" è sbagliato. È quello che è. A destra nel Regno Unito: non c'è giusto o sbagliato, è solo perché è così - purché tutti lo facciano allo stesso modo.

    
risposta data 09.11.2011 - 00:43
fonte

Leggi altre domande sui tag