Так что я работаю над этим заданием для своего класса, и книга ДЕЙСТВИТЕЛЬНО неясно, как использовать элементы argc, argv и atof () (которые все для меня новы), поэтому я пытаюсь использовать их, но получаю эта ошибка, и я не совсем уверен, как ее исправить:
Это моя ошибка:
error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’
Это мой код:
int main(int argc, char** argv)
{
//Code removed
//Code removed
float *feet = atof(argv); // <-- it says the error is with this line
//Code removed
return 0;
}
float convertFeet(float feet)
{
float meters = feet * .3048;
return meters;
}
«Цель» этой программы — преобразовать заданные ноги в число с плавающей запятой, а затем отобразить их (при этом также преобразовав их в метры). Я уже знаю, что функция convertFeet () работает так, как я ее тестировал перед добавлением atof (), argc, & argv части программы. Если бы кто-нибудь мог помочь мне лучше понять эту ошибку и решение, которое было бы очень полезно!
Еще раз спасибо,
-Стивен
Постскриптум Это точно ошибка компиляции, как сказал мне мой компилятор. Я просто не опубликовал эту часть ошибки, так как считал эту часть кода излишней.
char ** argv может содержать несколько «строк». (Я знаю, что C / C ++ технически не имеет строкового типа, но я надеюсь, что вы поняли концептуально, что я имею в виду). argv — это массив char * (строк), включающий имя исполняемого файла и все параметры;
Например:
myfile.exe param1 param 2
даст
argv[0] = myfile.exe
argv[1] = param1
argv[2] = param2
и argc = 3
Вы можете сделать это несколькими способами, но самым простым:
float feet = atof(argv[1]);
Вы должны сделать некоторую проверку ошибок, чтобы убедиться, что argc равен по крайней мере 2, или это взорвется на вас. Также может быть более одного параметра argv [2], 3 и т. Д. (Если argc == 1, параметры не указаны)
Надеюсь, это поможет.
Других решений пока нет …