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

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

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

1276閲覧

C言語でキーボードから入力した文字を表示した後、文字とそのASCIIコードを表示するコードのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2017/11/06 05:18

###前提・実現したいこと
C言語でキーボードから入力した文字(character)を表示した後、その文字のASCIIコードを表示するコードを書いています。以下のエラーがコンパイル時に表示され、どのように改善すればいいかわからず、困っています。

###発生している問題・エラーメッセージ

C

1ex2_3.c: In function ‘main’: 2ex2_3.c:6:10: warning: format ‘%c’ expects argument of type ‘int, but argument 2 has type ‘char *[-Wformat=] 3 printf("input data=%c\n", &a); 4 ^ 5ex2_3.c:7:9: warning: format ‘%d’ expects argument of type ‘int *, but argument 2 has type ‘char *[-Wformat=] 6 scanf("%d", &a);

###該当のソースコード

C

1#include <stdio.h> 2int main(){ 3 char a; 4 printf("input a character="); 5 scanf("%c", &a); 6 printf("input data=%c\n", &a); 7 scanf("%d", &a); 8 printf("input data ASCII code=%d\n",*(&a)); 9 return 0; 10} 11

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

scanfは値を読み取るのでポインタが必要ですが、printfは値を表示するだけなので、ポインタでなく普通の値として渡すことになります。

C

1 char a; 2 printf("input a character="); 3 scanf("%c", &a); 4 printf("input data=%d\n", a);

なお、C言語の規則上、printfなどの可変長引数の関数へcharを渡すとintへの変換が自動で入るので、%dで受けて問題ありません。

投稿2017/11/06 05:25

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/11 01:36

ご回答いただきましてありがとうございます。 キーボードから文字を取得し、入力された文字とそのASCIIコードを表示するという点で 以下のような返答は正しいのでしょうか。 ```(キーボードの1を売った場合) input a character=1 input data=49 input data ASCII code=1 ```
退会済みユーザー

退会済みユーザー

2017/11/11 02:17

追加で質問させていただきましたが、再度質問させていただきます。 この度はご回答いただきましてありがとうございました。
guest

0

フォーマット指定子%cによって整数値を渡すと宣言したのに、アドレスを渡しているからです。

C

printf("input data=%c\n", &a);


printf("input data ASCII code=%d\n",*(&a));

『aのアドレスをとって、そのアドレスの指し示す値をとる』最初からaと書けばよいです。
ポインタなどをろくに理解しない段階で、適当にエラーを取ろうとするのはよしましょう。

投稿2017/11/06 05:25

編集2017/11/06 05:28
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/11 02:18

ご回答いただきましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問