#c
#c
Вопрос:
Я пытаюсь ввести данные, используя функцию scanf для моделирования. Тем не менее, он выдает вышеуказанную ошибку в scanf. Ниже приведена некоторая часть кода. Он работал раньше, но теперь выдает эту ошибку **Поток 1: EXC_BAD_ACCESS (код=1, адрес=0x0) **
#include lt;iostreamgt; #include lt;iomanipgt; #include lt;cmathgt; #include lt;fstreamgt; #include lt;cstdlibgt; #include lt;randomgt; #include lt;chronogt; #include "normdist.h" using namespace std; double initial_stock_price, expiration_time, volatility, R; int no_of_discrete_barriers, no_of_trials; int main(int argc, char* argv[]) { sscanf(argv[1], "%lf", amp;expiration_time); sscanf(argv[2], "%lf", amp;risk_free_rate); sscanf(argv[3], "%lf", amp;volatility); sscanf(argv[4], "%lf", amp;initial_stock_price); sscanf(argv[5], "%lf", amp;strike_price); sscanf(argv[6], "%d", amp;no_of_trials); sscanf(argv[7], "%d", amp;no_of_discrete_barriers); sscanf(argv[8], "%lf", amp;barrier_price);
Комментарии:
1. Какие аргументы командной строки вы передаете?
2. У вас действительно есть данные
argv
? Если в этом месте чего-то нет, это может привести к плохому доступу.3. Удалите все эти
#include
директивы и тоusing namespace std;
, и просто напишите#include lt;stdio.hgt;
. Они не служат никакой цели в коде, который вы показали.4. I вы должны проверить, если argc gt;= 9, прежде чем пытаться выйти, если нет
5.
int argc
— В чем заключается ценностьargc
? В любом случае, вы никогда не должны писать программу, которая сначала не проверяет значениеargc
, собираетесь ли вы каким-либо образом получить доступargv
. Не удивляйтесь, еслиargc
это не то, чего вы ожидали.
Ответ №1:
Вы вызываете программу с аргументами, разделенными запятой? Вы должны вызывать программу вот так:
./program 1 0.05 0.25 50 20 100000 25 20
Когда я называю это так, это не приводит к сбою на моем компьютере.
Также, как указано выше, всегда проверяйте в начале программы, если argc gt;= 8, если нет — отобразите использование программы и завершите работу.
Комментарии:
1. Я вызываю эти входные данные из продукта-gt;схема-gt;gt; аргументы в xcode с помощью инструмента командной строки
2. Можете ли вы попробовать вызвать его через командную строку, как показано выше (вне кода vs)? Возможно, где-то в файле конфигурации есть опечатка, и аргументы передаются неправильно.