• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列)

数字文字列を数値化する関数AtoS()の制作方法

このQ&Aのポイント
  • 関数AtoS()は、与えられた数字文字列をshort型の数値に変換する関数です。
  • 引数として、文字列の先頭アドレスと動作の正否を返す変数が必要です。
  • 関数の処理は、与えられた文字列を一つずつ処理し、short型の数値に変換していくものです。

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

まずは指摘から while("\n" != *pStr) { この判定は全くダメです。 ・判定条件は*pStrが'0'~'9'の間にあることにすべき ・""は文字列のアドレスです。判定は文字と比べること 符号についてですが、変換ループに入る前に符号を判定しておく方が簡単です。 int sign = +1; if (*pStr == '-') { sign = -1 ; pStr++ ; } else if (*pStr == '+') { pStr++ ; } pStrは符号を除く数字列の先頭を指すはずなので、taka1192さんが考えた方法で絶対値を10進数化してください(ループ終了条件の判定を変えることをお忘れなく)。 ループ終了後に*pStrが'\0'なら変換はオッケーです。 '\0'以外なら入力文字列が数字列でなかったわけだからエラーを返すことが出来ます。 int *pRetCodeはこういう場合にエラーを返すためにあるのではないでしょうか? 最後にsuuにsignを掛ければ変換終了します。

関連するQ&A