Как исправить изменения параметров командной строки при чтении другого параметра? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать программу командной строки на 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...