如何从argv [] memcpy()?

use*_*267 4 c arrays string copying command-line-arguments

我想复制字符串,argv[0]但我不知道如何获得大小argv[0].

这该怎么做?

int main(int argc, char* argv[])
{
  char str[20];
  if(argc>0)
      memcpy(str, argv[0], sizeof(argv[0]));
}
Run Code Online (Sandbox Code Playgroud)

md5*_*md5 5

既然argv[0]是一个字符串,请使用strlen.

#include <string.h>

size_t length = strlen (argv[0]) + 1;

memcpy (str, argv[0], length);
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你也可以使用strcpy,这更适合字符串.

#include <string.h>

strcpy (str, argv[0]);
Run Code Online (Sandbox Code Playgroud)

在每种情况下,为了确保您的副本不会溢出,您应该检查大小str是否足够.

if (sizeof str >= length)
{
  /* Do the copy. */
}
else
{
  /* Report an error, or use dynamic allocation. */
}
Run Code Online (Sandbox Code Playgroud)