【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22816

文字列をコピー
投稿者---AI(2005/08/26 09:38:52)


AIです。
今構造体に文字列をコピーしたいのですが、
strcpy()を用いてコピーするとセグメンテーション違反になります。
文字列コピー先は、構造体のメンバである、charポインタです。
エラーとなっていますが、コーディングしたコードを記載します。
よろしくお願い致します。

<pre>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

struct RP{
char *t1;
int g;
};

RP i[3];

int main(void){
char *moji=&quot;日本&quot;;

strcpy(i[0].t1 , moji);

return 0;
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列をコピー 22818 通りすがって 2005/08/26 09:56:06
<子記事> Re:文字列をコピー 22819 Blue 2005/08/26 10:02:35
<子記事> Re:文字列をコピー 22823 とおり 2005/08/26 13:31:26


No.22818

Re:文字列をコピー
投稿者---通りすがって(2005/08/26 09:56:06)


つ i[0].t1 = moji;



この投稿にコメントする

削除パスワード

No.22819

Re:文字列をコピー
投稿者---Blue(2005/08/26 10:02:35)


コピーを作りたいならば、mallocして領域を取ることになります。

i[ 0 ].t1 = malloc( strlen( moji ) + 1 );
strcpy( i[ 0 ].t1, moji );

ただし、mallocした領域はどこかでfreeしたほうがベターです。



この投稿にコメントする

削除パスワード

No.22823

Re:文字列をコピー
投稿者---とおり(2005/08/26 13:31:26)


↓は参考になりますか?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char *pm;
    char copy[128];
    int  g;
} Rp;

int main(void)
{
    char moji[128] = "日本";
    Rp rp[3];

    rp[0].pm = moji;
    strcpy(rp[0].copy, moji);

    printf("pm   = %s\n", rp[0].pm);
    printf("copy = %s\n", rp[0].copy);

    printf("----------\n");

    strcpy(moji, "英国");
    printf("pm   = %s\n", rp[0].pm);
    printf("copy = %s\n", rp[0].copy);

return 0;
}

--[結果]--
pm = 日本
copy = 日本
----------
pm = 英国
copy = 日本


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧