Я пытаюсь делать самые простые вещи и натыкаюсь на кирпичную стену. Я пытаюсь прочитать имя файла из командной строки, чтобы использовать его позже в своей программе, но я даже не могу извлечь имя из argv[]. Вот код:
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char **argv[]){
cout << "argc = " << argc << "\n\n";
cout << "Filename: " << argv[1] << "\n";
return 0;
}
Я тестирую его на входных данных, которые предоставляют аргумент, конечно, так как нет проверки ошибок. Вот что я получаю, когда запускаю программу:
./a.out testfilename
*
argc = 2
Filename: 0x7fff56e41d30
Теперь я понимаю, что argv[1] — это указатель на массив символов, так что этот вывод имеет смысл. Однако, если я сделаю следующее изменение,
cout << "Filename: " << argv[1] << "\n";
to
cout << "Filename: " << *argv[1] << "\n";
при попытке разыменовать argv[1] для извлечения фактической строки я получаю ошибку сегментации.