🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

1057閲覧

[C言語]関数・ポインタ・構造体を用いたプログラム

CANMIZ

総合スコア7

C

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/12/06 21:14

初めまして。
現在C言語を勉強しており、練習問題を解いているのですが、
アウトプットが空白で何も表示されません。

アウトプットは下記の通りにしたいと考えております。
Name: Orange Juice Cost:$5.50f
Name: Green Beans Cost:$9.98f

まだC言語初心者のためポインタや関数でつまづいており、、
どこが間違っているのかご教示お願いできますでしょうか。
よろしくお願いいたします。

C言語

1#include <stdio.h> 2#define SIZE 3 3 4struct Product { 5 char name[13]; 6 double cost; 7}; 8 9int display(const struct Product* p, int size) { 10 int i; 11 for (i = 0; i >= size; i--) { 12 printf("Name: %s Cost:$%.2lf\n", p->name, p->cost); 13 } 14 return size; 15} 16 17int main(void) { 18 Product prods[SIZE] = { 19 {"Orange Juice", 5.50f}, 20 {"Green Beans", 9.98f} }; 21 22 display(prods, SIZE); 23 24 return 0; 25}

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

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

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

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

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

guest

回答2

0

Product prods[SIZE] = {

{"Orange Juice", 5.50f}, {"Green Beans", 9.98f} };

SIZEが3なのに、2つしか初期化してない。
Product prods[2]は内容が0となってしまう(それが意図してやってることならOKだけど)

for (i = 0; i >= size; i--) {

for文の書き方を確認してみれ。
i >= size のときにループする、ということになってしまって、これではforの中身は全く実行されないことになる

投稿2019/12/06 22:46

y_waiwai

総合スコア88038

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

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

CANMIZ

2019/12/07 04:31

教えてくださりありがとうございます! 配列とfor文の条件式について再度確認しました。 forは、条件が真であればループを実行するということですね。 ご丁寧にありがとうございます。
guest

0

ベストアンサー

C

1#include <stdio.h> 2#define SIZE 2 /* 変更 */ 3 4struct Product { 5 char name[13]; 6 double cost; 7}; 8 9int display(const struct Product* p, int size) { 10 int i; 11 for (i = 0; i < size; ++i ) { /* 変更 */ 12 printf("Name: %s Cost:$%.2lf\n", p->name, p->cost); 13 ++p; /* 追加 */ 14 } 15 return size; 16} 17 18int main(void) { 19 struct Product prods[SIZE] = { /* 変更 */ 20 {"Orange Juice", 5.50f}, 21 {"Green Beans", 9.98f} }; 22 23 display(prods, SIZE); 24 25 return 0; 26}

投稿2019/12/06 21:33

episteme

総合スコア16612

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

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

CANMIZ

2019/12/06 22:07

早々に回答くださり、ありがとうございます! 思い通りのアウトプットが表示されました! 変更して頂いた中の配列の定義について質問があります。 SIZE3ではなく、SIZE2になる理由を教えて頂けないでしょうか? Orange Juiceが配列の要素の1つ目、Green Beansが配列の2つ目、3つ目は’\0’の合計3つの要素が必要かと思い、SIZE3としていたのですが、この考えは間違っているのでしょうか? ご教示いただけますと幸いです。
episteme

2019/12/06 22:29 編集

間違っています。 末尾を'\0'で終端するのは文字列だけ。
CANMIZ

2019/12/06 22:50

ありがとうございます! すっかり文字列と混同していました。。 理解しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問