我正在C++控制檯中編寫一個基本轉換程序,我使用argv [1]和argv [2]爲 輸入數字& base。檢查整數除以零的錯誤
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <math.h>
#include <errno.h>
using namespace std;
const double MAXRANGE = pow(2.0,16.0); // 65536
const double MINRANGE = -pow(2.0,16.0);
int main(int argc, char *argv[])
{
int result;
if(atof (argv[1]) > 65536)
{
cout << "R" << endl;
return 0;
}
if(atof (argv[1]) < -65536)
{
cout << "R" << end;
return 0;
}
if(atof (argv[2]) > 65536 || (atof(argv[2]) < -65536))
{
cout << "R" << endl;
return 0;
}
int no,base,i;
no=atoi(argv[1]);
base=atoi(argv[2]);
if (argc == 3)
{
if(argv[2][0]=='b' && argv[2][1]=='2')
{
cout<<"V"<<endl;
return 0;
}
i= no % base;
no=no/base;
cout<<i;
}
return (0);
}
和我這是在lab1.exe在0x012851BE
未處理的異常錯誤:整數除零:0xC0000094。
我知道這個錯誤即將到來,因爲我已經使零條件。但我不知道,肯定的是,我不知道如何現在做錯誤檢查。 我也曾嘗試另一個代碼
if(strcmp("b2",argv[2]==0 || strcmp("b3",argv[2]==0)
但仍然拿出了同樣的錯誤。
那麼,我該如何對argv [2]基數進行錯誤檢查?用戶必須輸入argv [2],這是基礎的,我想檢查argv [2]必須是'b1','b2','b3'等..到'b16'。
謝謝!
這是'你是base'除以'strcmp'相等檢查中不相關的0。 – chris
@chris是的,我可以理解這個錯誤,但是我怎麼能接近錯誤檢查!thx! –
當'argv [2] ==「b2」'這次調用'base = atoi(argv [2])'時,你會期望base是什麼?提示,這不是傳遞給'atoi'的有效字符串。 –