C言語プログラミング学習ぼく、なぜか意図したとおりに動かない
2021年01月25日
三回ループして入力
それを表示するプログラム
なぜか入力2回までしか実行されない!!!!!
#include
typedef struct {
int number;
int clas;
char name[64];
} People;
void Input(People *data);
void Show(People data);
int main(void)
{
int i;
People data[3];
for (i = 0;i < 3;i++)
{
printf("%d番目のデータ\n",i + 1);
Input(&data[i]);
}
for (i = 0;i < 3;i++)
{
printf("%d番目のデータ\n",i + 1);
Show(data[i]);
}
}
void Input(People *data) {
printf("名前!\n");
scanf("%s",data->name);
printf("番号!\n");
scanf("%d",data->number);
}
void Show(People data) {
printf("名前-->%s\n",data.name);
printf("番号-->%d\n",data.number);
}
判定の場所変える
cなんて専門学校で習ったきりだが
for (i = 0;i < 3;i++)
ここかな?
>>
何がおかしい?
0.1.2と3回のはずだけど
for二個いる?
>>
うん、入力全部終わった後に表示させるだからね
Cはわからないわ
とりあえず scanf には &data->number で渡そう
>>
これ。
>>
いやいや、
変わらんから
そんなぶんぽうありまちえーーん
&data->で行けたわ
なんで???
知ってるけど、教える気全くなくなったわ。
解散。
>>
それな
なんで???
コンパイルエラーも見れないのか
ガイジやろ
>>
> コンパイルエラーも見れないのか
> ガイジやろ
コンパイルエラー出てないけど
論理エラーですが
どんなクソエディタ使ってんだこいつ
そんな文法ないんだろ?
じゃあ知らんよ
アロー演算子も知らずにイキってるってマジ?
>>
らしいねwwwwwwwwwwww
data->name
data[0].name
*data.name
どれもこれも意味は同じなのは理解できる
&data->name
ってなんだ?
dataのアドレスに直接書き込んでますってこと??理解不能
data->nameも通常変数モードで(すなわち直接値を書き換えている)ってことだろ
>>
scanfは引数にポインタを取る関数なんだぞ
printfの逆だからと勘違いして変数自体を渡してバグるのはC言語初心者あるあるだぞ
>>
&(data->name) だよ
関係ないけど、Show関数の引数がデータ渡しだから無駄にコピーするオーバーヘッドがあるのが気に食わんな
const のポインタ渡しで参照渡しにしとけ
前にmaxmin聞いたやつだろ
宿題は一人でやれよ
C言
>>
やめたれwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
あー前もスレ立ててたやつか
プログラミング言語より口の聞き方勉強しろ
俺は現役バリバリの中堅SEだわ
プログラミングの勉強してるんだよ
>>
え
ええー
中堅!?しかもSE!???wwwwww
勉強の仕方改めないとやばいだろコイツ…
よく見たらアロー演算子が問題じゃないやんけ
ただのscanfやんけ