この機能の問題点を確認してください。この関数は、文字列が数値かどうかをチェックします。それは(正と負の整数と小数が許可されている)数値の場合は、それが他の1の値を返し、それは私がコードを実行しようとしましたが、出力は常に0文字列が数字であることを確認してください
{int is_valid (char strval[])
{
int strlen, ascii_code, i;
int decimal=-1, negative=-1;
strlen=strlen_safe(strval);
for (i=0; i<strlen; i++)
{
ascii_code=(int)strval[i];
if(ascii_code==44)
return 0;
else if(ascii_code==45)
{
negative++;
if(negative||i!=0)
return 0;
}
else if(ascii_code==46)
{
decimal++;
if(decimal>0)
return 0;
}
else if(ascii_code<48||ascii_code>57)
return 0;
}
return 1;
}
否定的な符号なし整数? – alex
44の特定のチェックはなぜですか? – unwind
'45'のような数字は使用しないでください。' -''をはるかに読みやすくしてください。 stdlib 'strtol'または' strtof'を調べます。 – totoro