電卓プログラム・十六進電卓(hex calculator)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ascii

電卓プログラム・十六進電卓(hex calculator)

#1

投稿記事 by ascii » 6年前

初心者です。
十六進電卓のプログラミングをつくりたいです。
足し算・引き算をして、十進法と十六進法の両方の答えを下記のように導き出したいです。

> hexcalc 0xff87 + 0xaabb
0x1aa42 (109122)
> hexcalc 0xff87 - 0xaabb
0x54cc (21708)
> hexcalc 0x1000 - 0x10
0xff0 (4080)
> hexcalc 1000 - 10
0x3de (990)
> hexcalc 1000 - 0x10
0x3d8 (984)

下記ではsegment faultになってしまい、何が間違っているのか分からず困っています。
どなたか詳しい方がいらっしゃったらご教授いただけませんか。

コード:

# include <stdio.h>
# include <stdlib.h>

int main (int argc, char** argv)
{
  int a;
  a = strtol(argv[1], NULL, 0); //convert the input                             
  printf("0x%x\n", a); // print as a hexadecimal value                          
  printf("%u\n",(unsigned)strtol("0xAB8",NULL,0));
  return 0;
}

アバター
へろりくしょん
記事: 92
登録日時: 10年前
住所: 福岡

Re: 電卓プログラム・十六進電卓(hex calculator)

#2

投稿記事 by へろりくしょん » 6年前

argv[1] をチェックしてみてください。 NULL になってませんか?

non
記事: 1097
登録日時: 9年前

Re: 電卓プログラム・十六進電卓(hex calculator)

#3

投稿記事 by non » 6年前

segment faultですか。コンパイラは何を使ってますか?
実行時に、コマンドラインでどう入力しましたか?
non

閉鎖

“C言語何でも質問掲示板” へ戻る