Я пытаюсь создать программу командной строки на C89
, которая читает файл, применяет к нему изменения и затем сохраняет его. Работа с файлами работает нормально (по крайней мере, до сих пор), но я борюсь с чтением параметров. Есть 3 параметра:
входной файл,
желаемая операция и
- выходной файл.
Когда он читает эти параметры, они копируются в массив символов для последующей обработки в коде. При пошаговой отладке (в настоящее время я использую QtCreator
), первый параметр копируется нормально (пример: «test.txt
»), но когда я читаю второй (операция), первые параметры превращаются в «\000est.txt
"(вот как это показано в отладчике). Конечно, если я использую это как есть, я получу ошибку сегментации. Я переучиваю C, поэтому все еще пытаюсь привыкнуть к этим вещам.
Я попытался сделать копию на другой char array (strcpy(newstring, input);)
и предотвратил проблему, но, похоже, не является хорошим решением. Я бы постарался избежать обходных путей здесь.
int main(int argc, char* argv[])
{
if(argc <= 3)
{
printf("\nERROR: input needs to be at least <input file> <operation> <output file>. Exiting...");
return -1;
}
char input[20];
char option[6];
char output[20];
strcpy(input, argv[1]);
strcpy(option, argv[2]);
strcpy(output, argv[3]);
//the file reading code is not here in main
return 0;
}
Я ожидал, что вводом будет имя файла ("test.txt
"), но я получил "\000est.txt
" при копировании второго аргумента в другой char array
.