演習 11-3

#include <stdio.h>

char *str_copy(char *d, const char *s){

char *t = d;

while(*d++ = *s++);

return t;
}

int main(){

char str[128] = "ABC";
char tmp[128];

printf("str = \"%s\"\n", str);

printf("コピーするのは:"); scanf("%s", tmp);

puts("コピーしました.");
printf("str = \"%s\"\n", str_copy(str, tmp));

return 0;
}

1 件のコメント:

  1. 突然すみません、お聞きしたい事があるのですが
    294ページのList11-6

    /*
    文字列をコピーする
    */

    #include

    /*--- 文字列sをdにコピーする ---*/
    char *str_copy(char *d, const char *s)
    {
    char *t = d;

    while (*d++ = *s++)
    ;
    return t;
    }

    int main(void)
    {
    char str[128] = "ABC";
    char tmp[128];

    printf("str = ¥"%s¥"¥n", str);

    printf("コピーするのは:", tmp);
    scanf("%s", tmp);

    str_copy(str, tmp);

    puts("コピーしました。");
    printf("str = ¥"%s¥"¥n", str);

    return 0;
    }




    で*str_copyという関数がありますがその中で
       char *t = d;
    return t;
    この2行の必要性を感じないのですが、何の為に書いてあるのかわかりますか?
    個人的にはコピーされて書き換えられてしまうから、バックアップとして撮ってるんでしょうか?

    返信削除