Возможно, вы упускаете момент, когда argv[1]
равен уже a char *
, поскольку argv
- это массив char*
, но, возможно, вам придется изменить argv[1]
для некоторых непостижимых причина:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
//Method 1
char *myCopy = strdup(argv[1]);
printf("%s\n", myCopy);
free(myCopy); myCopy = NULL;
//Method 2
char myCopy2[50];
strcpy(myCopy2, argv[1]);
printf("%s\n", myCopy2);
return 0;
}
Обратите внимание, что argc
следует проверять, чтобы избежать сбоя, если пользователь не предоставляет argv[1]
(и, конечно, если вы используете method2, вы должны убедиться, что ваш буфер достаточно длинный, чтобы принять ввод пользователя)