MSDN によると:
strtod
変換を実行できない場合、またはアンダーフローが発生した場合は 0 を返します。
文字列がゼロ (つまり 0.0000) の場合はどうなりますか? 変換にエラーがないことを確認するにはどうすればよいですか?
OK、次のコードを使用してアイデアを検証します。
char *Y = "XYZ";
double MyNum;
char *MyEndPtr;
int Err_Conversion = 0;
errno = 0; //reset
MyNum = strtod (Y, &MyEndPtr);
if ( (MyNum == 0) && (errno != 0) && (strcmp(Y, MyEndPtr) == 0) )
{ Err_Conversion = 1; }
MyNum = 0 であることがわかりますが、Y の内容が MyEnPtr にコピーされたり、この強制エラーで errno = 0 になったりすることはありません。何か案が?