dポイントプレゼントキャンペーン実施中!

構造体に文字列を入れたいのですがうまくいきません。
処理としては身長が180センチ以上の生徒には「tall」という文字列をつける、という処理です。


#include <stdio.h>
#define NUM 4
typedef struct{
int b ;/*学生番号*/
int s ;/*身長*/
char k;/*結果*/
}Stdya;

int main (void){
Stdya std[NUM];
char m [ ] = "tall";
int i;

for(i=0;i<NUM;i++){
printf("学生番号");
scanf("%d",&std[i].b);
printf("身長");
scanf("%d",&std[i].s);
if(180<=std[i].s){
&std[i].k = m;
}
printf("%d\t%d\t%s\n",std[i].b,std[i].s,std[i].k);
}
return 0;
}

20行目の処理が間違っているのはよくわかります
どうすれば「tall」処理をできるか教えてください

A 回答 (2件)

構造体のメンバーkの宣言が charの単一変数です


char単一変数には 't'などの1文字しか格納出来ません

char k[10];
といった文字配列宣言しておきます

Cランタイムライブラリを使っていいなら strcpyなどでコピーしましょう
ランタイム関数を使えないなら
std[i].k[0] = 't';
std[i].k[1] = 'a';
std[i].k[2] = 'l';
std[i].k[3] = 'l';
std[i].k[4] = '\0';
といった具合に 1文字ごとに代入します
    • good
    • 1
この回答へのお礼

ありがとうございます!
どんな方法を使ってもかまわないので「strcpy」を使って見ようと思います。

使えなかったときの方法までご丁寧にありがとうございます!
一文字ずつの代入になるのですね。。。文字だから「¥0」もつける。。よくわかりました。


ありがとうございました

お礼日時:2008/05/16 16:21

#include <stdio.h>


#include <string.h>
#define NUM 4
typedef struct{
int b ;/*学生番号*/
int s ;/*身長*/
char k[10];/*結果*/
}Stdya;

int main (void){
Stdya std[NUM];
int i;

for(i=0;i<NUM;i++){
printf("学生番号");
scanf("%d",&std[i].b);
printf("身長");
scanf("%d",&std[i].s);
strcpy(std[i].k,180<=std[i].s?"tall":"");
printf("%d\t%d\t%s\n",std[i].b,std[i].s,std[i].k);
}
return 0;
}
    • good
    • 0
この回答へのお礼

ソースコードありがとうございます!

早速「strcpy(std[i].k,180<=std[i].s?"tall":"");」を挿入したらUPできました

ヘッダが足りなかったんですね。。。strcpyを使うなんて頭に浮かびませんでした。

ありがとうございます!!!

お礼日時:2008/05/16 16:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!