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

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

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

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

Q&A

解決済

4回答

2983閲覧

出席番号などの情報を表示するプログラム

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

0グッド

0クリップ

投稿2016/08/05 09:23

編集2016/08/05 10:22
#include <string.h> struct student { int year; /* 学年 */ int clas; /* クラス */ int number; /* 出席番号 */ char name[64]; /* 名前 */ double stature;/* 身長 */ double weight; /* 体重 */ }; void student_print(student data[],int count); int main(void) { student data[] = { { 1,2,3,"A",12.3,45.6} , { 1,2,4,"B",12.3,45.6} , { 1,2,5,"C",12.3,45.6} , { 1,2,6,"D",12.3,45.6} , { 1,2,7,"E",12.3,45.6} , { 1,2,8,"F",12.3,45.6} , { 1,2,9,"G",12.3,45.6} }; student_print(data, 7); return; } void student_print(student data[],int count) { int i; for (i = 0;i < count;i++) { printf("[学年]:%d\n",data[i].year); printf("[クラス]:%d\n",data[i].clas); printf("[出席番号]:%d\n",data[i].number); printf("[名前]:%s\n",data[i].name); printf("[身長]:%f\n",data[i].stature); printf("[体重]:%f\n",data[i].weight); } return; }

エラーメッセジが次のようにでます。
prog.cc: In function 'int main()':
prog.cc:27:5: error: return-statement with no value, in function returning 'int' [-fpermissive]
return;
^~~~~~

環境はwiondows7 です。
今、苦しんで学ぶc言語というサイトで勉強中なのですが、上のプログラミングが上手くいきません。よろしくお願いします。

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

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

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

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

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

kei344

2016/08/05 09:53

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答4

0

ベストアンサー

こんにちは。

恐らく、printf文の前に「全角」の空白文字があります。
「半角」の空白文字へ置き換えれば消えると思います。


【追記】
取り敢えず、下記にてビルドして実行しても落ちなくなりました。
変更箇所にマークしましたので、何が問題だったのか良く考えてみてください。

C

1#include <stdio.h> // ここ 2#include <string.h> 3 4struct student { 5 int year; /* 学年 */ 6 int clas; /* クラス */ 7 int number; /* 出席番号 */ 8 char name[64]; /* 名前 */ 9 double stature; /* 身長 */ 10 double weight; /* 体重 */ 11}; 12 13void student_print(struct/*←ここ*/ student data[],int count); 14 15int main(void) 16{ 17 student data[] = { 1,2,3,"A",12.3,45.6}; 18 student_print(/*ここ*/data,/*ここ*/ 1/*←ここ*/); 19 return 0/*←ここ*/; 20} 21 22void student_print(struct/*←ここ*/ student data[],int count) 23{ 24 int i; 25 for (i = 0;i < count;i++) { 26 printf("[学年]:%d\n",data[i].year); 27 printf("[クラス]:%d\n",data[i].clas); 28 printf("[出席番号]:%d\n",data[i].number); 29 printf("[名前]:%s\n",data[i].name); 30 printf("[身長]:%f\n",data[i].stature); 31 printf("[体重]:%f\n",data[i].weight); 32 } 33 return; 34}

投稿2016/08/05 09:32

編集2016/08/05 10:25
Chironian

総合スコア23272

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

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

退会済みユーザー

退会済みユーザー

2016/08/05 09:43

こんにちは。コメントありがとうございます。 全角を半角にしたんですが、怒られます。
Chironian

2016/08/05 09:46

同じエラーメッセージなら、そのエラーメッセージが出ているところに「全角」の空白が残ってますよ。 異なるエラーメッセージなら、それを出して頂かないと分からないです。
退会済みユーザー

退会済みユーザー

2016/08/05 09:50

エラーメッセージが不規則で、増えたり減ったりします。
Chironian

2016/08/05 10:01

行の終わりに付いている空白は全て削除しましょう。 それ以外の空白が本当に全て半角なのか確認しましょう。 あと、https://teratail.com/questions/41441 を参考にkei344さんの修正依頼にも対応下さいね。
退会済みユーザー

退会済みユーザー

2016/08/05 10:48

エラー解決しました。main関数のreturnに0をつけ忘れてたのと、student_print(data, 1)の第二引数が配列の要素が6個あるから6だと勘違いしてました。あと、structのつけ忘れでした。皆さん、ご協力感謝します。ありがとうございました。
guest

0

全角半角問題のほかに以下の点がおかしいです

student_print(student data[],int 7);

定義した関数を呼び出しているところですが、
関数呼び出しに引数の型の情報は要りません

C

1student_print(data, 7); 2

としましょう

あと

student data[] = { 1,2,3,"A",12.3,45.6};

構造体の配列を宣言しているところで
構造体の配列でないデータを代入しています。

関数で7つ出力するようにしているので
以下のように最低7つ配列で定義しましょう

C

1student data[] = { 2 { 1,2,3,"A",12.3,45.6} 3 , { 1,2,4,"B",12.3,45.6} 4 , { 1,2,5,"C",12.3,45.6} 5 , { 1,2,6,"D",12.3,45.6} 6 , { 1,2,7,"E",12.3,45.6} 7 , { 1,2,8,"F",12.3,45.6} 8 , { 1,2,9,"G",12.3,45.6} 9}; 10

投稿2016/08/05 10:15

kutsulog

総合スコア985

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

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

退会済みユーザー

退会済みユーザー

2016/08/05 10:23

こんばんは。 言われたとおりにしたらエラーが大分減りました。ありがとうございます。
guest

0

質問文の編集履歴を見ると、該当行の末尾に全角スペースが2個あるようです。
とりあえずソースコードは ``` でくくっていただければと思います。

投稿2016/08/05 09:52

k1000

総合スコア67

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

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

退会済みユーザー

退会済みユーザー

2016/08/05 09:56

すいません。もう少し噛み砕いて言って頂けると助かります。僕、アホなので意味が理解できないんですよ。
k1000

2016/08/05 10:08 編集

そっけない回答ですみません。 printf("[クラス]:%d\n",data[i].clas); ……の行末に全角スペースがあるという指摘だったのですが、回答中に編集されたようです。
WoodenHamlet

2016/08/05 10:14

どんなエディタを使用されてるかわかりませんが” ”を" "に全置換すればとりあえず解決するのかな? 私自身IMEの設定で全角空白入力不可にしているのでこの手のエラーは見なくなって久しいですが、そこまでしたくなくてもとりあえずエディタの設定で全角空白を表示させるようにはしておきましょう。
guest

0

C

1 2 3void student_print(student data[],int count); 4 56 7void student_print(struct student data[],int count); 8 9とするか、型定義時に 10 11typedef struct{ 12 int year; /* 学年 */ 13 int clas; /* クラス */ 14 int number; /* 出席番号 */ 15 char name[64]; /* 名前 */ 16 double stature;/* 身長 */ 17 double weight; /* 体重 */ 18} student; 19 20としましょう。

struct で宣言した型はソースで使うとき

C

1struct newStruct { 2~~~ 3} 4 5void func(struct newStruct x) { 6~~~ 7}

と呼ばなければなりません。
typedef で型に別名をつけることができ、例では新しく定義した型に student という別名を付けています。

投稿2016/08/05 10:50

WoodenHamlet

総合スコア306

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問