2009/04/13 [長年日記]
新入社員応援企画(その3)
《問題》
以下の構造体PERSON型変数value1およびvalue2を入れ替える関数stswap()を作成しなさい。
typedef struct person {
int id;
char name[50];
} PERSON;
《解答例》
今回はオリジナルの構造体。さて、この場合数値または文字列のどちらにすればいいのか?
とりあえず、数値型と同じように作ってみる。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int stswap(PERSON *value1, PERSON *value2)
{
PERSON work;
work = *value1;
*value1 = *value2;
*value2 = work;
return(0);
}
実はこれであっさりと動いてしまう。
なぜなら、構造体といえどもひとつの「型」として取扱えるので、数値型と同じように取扱うことができる。逆に言うと、文字列のときが特殊と言うかC言語には「文字列」という型がなく、そのため「文字型の配列」で代用しているため、このようなことが起こる。早い話、C言語に「文字列型」あればよかったと言うことかな。
でも、そんなことをいっても仕方がないので、文字列をきちんと取扱えるようになる必要がある。
Comment & Trackback