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

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

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

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

Q&A

解決済

3回答

648閲覧

構造体とポインタについて

Rivia

総合スコア23

C

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

0グッド

0クリップ

投稿2017/08/24 18:02

編集2017/08/24 18:09

c言語初心者の私です。。。
構造体というものがあると知ってポインタ(変数の方)も交えようとおもいまして、ちょっと自分であるプログラムを変形して作ってみたのですが、どうもうまくいきません。
もしよろしければ、理解の浅い私にご指導お願いします。

構造体についてもまだ全然分からない状態です。

プログラム:
#include <stdio.h>
#include <string.h>

typedef struct {

int year; int class; int number; char name[64]; double stature; double weight;

} student;

int main(void){

student data; student *pdata; pdata = &data; (*pdata).year = 10; strcpy((*padata).name,"MARIO"); printf("\n名前は = %s",data.name); printf("\n年数は = %d",data.year); return 0;

}

吐き出すエラーの内容:
In function 'main':
error: 'padata' undeclared (first use in this function)
strcpy((*padata).name,"MARIO");
^
bitter1622.c:24:11: note: each undeclared identifier is reported only once for each function it appears in

理想:

名前は = MARIO
年数は = 10

ポインタは変数の住所(アドレス)を使うやり方だと思っています。
これについても認識の違いありましたら。ご指導のほどよろしくお願いします

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

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

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

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

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

mattn

2017/08/24 23:48 編集

コードブロックを使って下さい。回答者の負担になりますし、あとからこのページを検索してくるユーザにも負担です。今からでも修正出来ます。
Rivia

2017/08/30 04:45

すみません。このサイトをあまり使ったことがないもので( ;´Д`)
Rivia

2017/08/30 04:46

いろいろな機能があるのは知っているので指摘があれば使えるようにしていきます。
guest

回答3

0

単なるtypoのようです。

C

1strcpy((*padata).name,"MARIO"); 23strcpy((*pdata).name,"MARIO");

また、アロー演算子を使い、以下のように書くことも出来ます。

C

1strcpy((*pdata).name,"MARIO"); 23strcpy(pdata->name,"MARIO");

投稿2017/08/24 18:26

編集2017/08/30 04:54
aglkjggg

総合スコア769

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

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

Rivia

2017/08/30 04:54 編集

ご指摘ありがとうございます。 単なるtypoでした。。 アロー演算子というものを初めて知りました。 使っていきたいと思います
aglkjggg

2017/08/30 04:56 編集

いつもC++を書いているクセでシンタックスハイライトで「C++」としていましたが「C」に訂正しました。 誤解させた点お詫びします。 また、回答したコードは「C言語」でも書くことが出来る書き方です。 「C++」だけで書ける書き方ではありません。
Rivia

2017/08/30 05:29

分かりました! ご指導ありがとうございます
guest

0

修正箇所や理由は、他回答者の通りです。
違う観点から回答します。
コンパイルエラーが英語の場合は、googleなどで翻訳すれば
大まかな内容がわかります。
今回の例では、

error: 'padata' undeclared (first use in this function)

エラー: 'padata'宣言されていない(この関数では最初に使用されます)

となります。一度、翻訳することも検討して見てください。

また、翻訳しなくても、padataがキーと思われれるので
検索してみれば、今回のエラーの原因は特定できたと思われます。

他者に聞く前に、一度チャレンジしてみては、どうでしょうか?

投稿2017/08/25 12:39

ai_2013_dev

総合スコア338

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

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

0

ベストアンサー

error: 'padata' undeclared (first use in this function)
strcpy((*padata).name,"MARIO");

strcpyの行で単純に変数padataがないよ、ってエラーです。
なので、こう直せば良いでしょう。

strcpy((*pdata).name,"MARIO");

慣れないうちはエラーが出るとびっくりしてしまうかもしれませんが、良く読めば内容は理解できるはずです。
見てもわからない場合は、エラー文でググればそれなりに解決策は見つかると思います。

投稿2017/08/24 23:57

ttyp03

総合スコア16998

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

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

Rivia

2017/08/30 04:44

ありがとうございます! エラー文をググってみるようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問