質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

初めて質問します。この質問の内容のプログラミングがわかりません。助けてください。

受付中

回答 6

投稿

  • 評価
  • クリップ 0
  • VIEW 1,847

score 8

#include <stdio.h>

#define FALSE 0
#define TRUE  !FALSE

int main(){
  int  value,c, count;
  char line[128];

  count = 0;

  while(TRUE){
    count++;
    if(count > 5) break;

    printf("Enter a HexValue ===> ");
    fgets(line, sizeof(line), stdin);
    sscanf(line, "%x", &c);

    printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c);
    if(0x20 <= c && c <= 0x7e)
      printf("-%%c(%c)\n",c);
    else
      printf("-Not Printable character\n");

    if      (0x20 <= c && c <= 0x2f){
      puts("====> Scope_A\n");
    }else if(0x30 <= c && c <= 0x39){
      puts("====> Scope_B\n");
    }else if(0x3a <= c && c <= 0x40){
      puts("====> Scope_C\n");
    }else if(0x41 <= c && c <= 0x5a){
      puts("====> Scope_D\n");
    }else{
      puts("====> Scope_E\n");
    }
  }

  return(0);
}

/*
Enter a HexValue ===> 56
Colum=01:%d( 86)-%x(56)-%c(V)
====> Scope_D

Enter a HexValue ===> 07
Colum=02:%d(  7)-%x( 7)-Not Printable character
====> Scope_E

Enter a HexValue ===> ff
Colum=03:%d(255)-%x(ff)-Not Printable character
====> Scope_E

Enter a HexValue ===> 7f
Colum=04:%d(127)-%x(7f)-Not Printable character
====> Scope_E

Enter a HexValue ===> 7e
Colum=05:%d(126)-%x(7e)-%c(~)
====> Scope_E
*/

このプログラミングがどういう意味なのかわかりません。
今年から大学に進学してプログラミングを学んでいるのですが、初心者すぎて授業についていけていません。

 printf("Enter a HexValue ===> ");
    fgets(line, sizeof(line), stdin);
    sscanf(line, "%x", &c);

    printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c);
    if(0x20 <= c && c <= 0x7e)
      printf("-%%c(%c)\n",c);
    else
      printf("-Not Printable character\n");

特にこの部分について教えてほしいです。
どうかよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+6

コードだけどんと載せられて,「意味が分からない」と言われても,回答者の方も回答に困ると思います.
一つ一つ意味を説明していこうとしたら,それこそ入門レベルの教科書頭からすべて説明していかないと説明できません.
今現在あなたがどこまで理解していて,どこがわからないのか,そこが明確で無い限り,あなたの望む回答はできませんし,仮に回答したとしても理解できないでしょう.
そもそもこのコードが明らかにCなのにC#のタグをつけている時点で勉強不足と言わざるを得ません.
プログラミングに限らず,基礎があって応用ができるのです.あなたはそもそもの基礎が足りていないように思います.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

> ... 大学に進学してプログラミングを学んでいる ...
クラスメートや先生に聞くことはできないのでしょうか?



投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/02 21:51

     クラスメートに教えてもらったのですが、私が理解することができず何度も聞くのがきまづくなってしまいまして・・・。
     大学の先生も今忙しそうであまり部屋にいないんです。
     なので自分でネットや教科書で調べているのですがどうしてもわからないんです。

    キャンセル

  • 2015/06/02 22:26

    このコードが提示され前までの講義内容は理解できているのでしょうか?
    地道に教科書、講義の内容を最初からなぞってみてはいかがdしょう。
    教科書にあらわれたコードは実際に自分で打ち込んで実行しながら進めていくとよいです。(copy & paste でなく、実際に 1文字ずつ キー入力していく)
    さらに すこし自分でアレンジを加えてみて、どんなふうに動作の差が生じるかを試してみると さらに理解を深められます。

    キャンセル

+2

まず直接の回答ではありませんが
出来ないことがあったら出来るところまで戻りましょう。

「printf("Enter a HexValue ===> ");  画面に表示するんだな」
「printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c);  %02dとかってなんだろうググるか」
「sscanf(line, "%x", &c);  sscanfってなんだろうググるか」

みたいな感じです。

細かい部品を組み合わせてより大きな問題に対応するのがプログラミングです。
地道に一行一行分からない関数を調べれば「何をやっているのか」はわかります。
(「何故こうやろうと思ったのか」と「何でこれがやりたいのか」はその限りでない。)

ちなみに質問のコードは16進数を入力するといろんな表示で返すプログラムです。
(講義の流れで出された課題でも入門書でも、そもそも概要ぐらい説明されてそうなものですが。)

「特にこの部分」についてですが。
    printf("Enter a HexValue ===> ");
    fgets(line, sizeof(line), stdin);
    sscanf(line, "%x", &c); 
入力部分です。
"Enter a HexValue ===> "と表示するコードの下に続いているので
入力に関することだろうと当たりを付けられます。

if(0x20 <= c && c <= 0x7e) の条件式については
anaprestooさんの回答のとおりです。

解らなかったとして、
else
    printf("-Not Printable character\n"); 
と続くので、文字として扱えるかどうかの判定なんだなと推測できます。


あとタグがC#になってますが、明らかにこのコードC#ではないです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

0x20 <= c && c <= 0x7eは「画面に表示できる文字」を表すようです。
参考…ASCIIコード表

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

このプログラムが、何をするプログラムか分かっていますか?
・・・聞いた話ではなく、実行結果からあなたが得たものは何ですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

C#?C+?なんてもうずっとやってないのでうろ覚えですが。
流れ的にたぶんプログラムのフォーマットの概念をテストしてるプログラムですね。
入力した文字を10進数、16進数、文字コード、比較してるだけです。
関数調べるのめんどくさいので分かる範囲で。

printf("Enter a HexValue ===> "); 
    fgets(line, sizeof(line), stdin); ◀︎わからん
    sscanf(line, "%x", &c); ◀︎入力を求める関数 %xはたぶん16進数

    printf("Colum=%02d:%%d(%3d)-%%x(%2x)",count,c,c); ◀︎count表示、cを10進数、16進数で表示
    if(0x20 <= c && c <= 0x7e)◀︎IF構文で文字コード比較のテスト 
      printf("-%%c(%c)\n",c); ◀︎比較成功したので文字コードで表示
    else 
      printf("-Not Printable character\n"); ◀︎範囲外、もしくは比較できなかったので出力

大学は高校までと違って教授が一方的に伝えるだけだから分からない部分は自分で調べれる力を身につけないとあかん。
とりあえず初歩的なprintf関数とscanf関数ぐらい調べて理解しないと試験受からないからがんばれ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • C#に関する質問
  • 初めて質問します。この質問の内容のプログラミングがわかりません。助けてください。