Was ist der Unterschied zwischen memcpy () und strncpy (), da letztere leicht einen Ersatz für erstere darstellen können?
Was ist der signifikante Unterschied zwischenmemcpy()
undstrncpy()
? Ich frage dies, weil wir leicht ändern könnenstrncpy()
Sie können beliebige Datentypen kopieren, nicht nur Zeichen, indem Sie einfach die ersten beidenchar*
Argumente zuchar*
und Ändern des dritten Arguments als ein Vielfaches der Größe dieses Nicht-Zeichen-Typs. Im folgenden Programm habe ich das erfolgreich verwendet, um einen Teil eines Integer-Arrays in ein anderes zu kopieren, und es funktioniert so gut wiememcpy()
.
#include <stdio.h>
#include <string.h>
int main ()
{
int arr[2]={20,30},brr[2]={33,44};
//memcpy(arr,brr,sizeof(int)*1);
strncpy((char*)arr,(char*)brr,sizeof(int)*1);
printf("%d,%d",arr[0],arr[1]);
}
Ebenso können wir dafür sorgen, dass es funktioniertfloat
oder anderer Datentyp. Also, was ist der wesentliche Unterschied vonmemcpy()
?
PS: Ich frage mich auch warummemcpy()
ist instring.h
Header-Datei, da fast alle Bibliotheksfunktionen mit Zeichenketten verknüpft sindmemcpy()
ist in der Natur allgemeiner. Irgendein Grund?