« | »

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

Comments and Trackback are closed.

No comments.