#include <stdio.h> struct xyz{ int x; long y; double z; }; struct xyz scan_xyz(int x, long y, double z) { struct xyz temp; temp.x = x; temp.y = y; temp.z = z; return temp; } int main(void) { int a, b, c; struct xyz s = { 0, 0, 0 }; printf("x:"); scanf("%d", &a); printf("y:"); scanf("%ld", &b); printf("z:"); scanf("%lf", &c); s = scan_xyz(a, b, c); printf("xyz.x = %d\n", s.x); printf("xyz.y = %ld\n", s.y); printf("xyz.z = %f\n", s.z); return 0; }
上のコードを「int型、long型、double型の値をキーボードから読み込んで、その値をメンバとして持つxyz構造体の値を返却する関数」に直してほしいです。
x、yはうまく実行できたのですが、zだけ全く違う値が出てきてしまうので、どこをどう直せばいいのか教えていただきたいです。
少しは「自分で考えた」「自分でググって調べた」、コードを書いてみたけどうまく動かない、そのコードについて何が悪いのか教えてほしい、というのであれば答える気にもなるが、課題をそのままここで質問するのは控えたほうが良い。