Копирование строки из argv в массив символов в C
у меня есть следующий код, который копирует строку аргумента в массив char.
char *str = malloc(strlen(argv[1]) + 1);
strcpy(str, argv[1]);
printf("%sn", str);
почему, когда я передаю следующий аргумент:
MfvmFOaDUaa5bfr$cvtrefr
Я:
MfvmFOaDUaa5bfr
вместо целой строки. Где-то я теряю первый номер. Я пробовал различные методы, и каждый работает одинаково или не работает.
мой ключ-получить только соль (в этом случае) 4MfvmFOaDUaa5bfr
или MfvmFOaDUaa5bfr
без третьего символа$. Я пытаюсь также получить метод для копирования строки, пока я встречаю третий $, а затем прекратите копирование.
1 ответов
потому что в строке MfvmFOaDUaa5bfr$cvtrefr
на ,
и
$cvtrefr
расширяются оболочкой для позиционных аргументов и переменных, и все они пусты.
передайте аргумент с одинарными кавычками:
./a.out 'MfvmFOaDUaa5bfr$cvtrefr'
что предотвратит расширение оболочки.