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

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

 詳しくはこちら


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

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


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

No.22892

*char型から*int変数に格納する方法
投稿者---AI(2005/08/30 09:36:17)


お世話になります。AIです。

今、構造体メンバに変数を格納したいのですが、
セグメンテーション違反になります。
*char変数を構造体の*char変数と*int変数に格納したいのですが、
うまく行きません。キャストなどしてもできません。
どうしたらいいのでしょうか?
よろしくお願い致します。

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

struct RP{
 char *tt;
 int *st;
};

RP in[3];

int main(void){

char *t ="日本";
char *s ="1200";

in[0].tt = t;
in[0].st = (int *)s;

return 0;

}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:*char型から*int変数に格納する方法 22893 Blue 2005/08/30 09:44:24
<子記事> Re:*char型から*int変数に格納する方法 22894 おでん 2005/08/30 10:27:32
<子記事> Re:*char型から*int変数に格納する方法 22895 とおり 2005/08/30 10:47:30
<子記事> Re:char*型からint*変数に格納する方法 22896 shu 2005/08/30 10:50:16
<子記事> Re:*char型から*int変数に格納する方法 22897 si 2005/08/30 12:51:52


No.22893

Re:*char型から*int変数に格納する方法
投稿者---Blue(2005/08/30 09:44:24)


文字列→数値変換関数
atoi
sscanf
strtol

領域確保関連
malloc
free



この投稿にコメントする

削除パスワード

No.22894

Re:*char型から*int変数に格納する方法
投稿者---おでん(2005/08/30 10:27:32)


char *t ="日本"; ←代入後のtの値(1)
char *s ="1200"; ←代入後のsの値(2)

in[0].tt = t; ←代入後のin[0].ttの値(3)
in[0].st = (int *)s; ←代入後のin[0].stの値(4)

(1)==(3),(2)==(4)ですよね?
何がおかしいのでしょうか?


この投稿にコメントする

削除パスワード

No.22895

Re:*char型から*int変数に格納する方法
投稿者---とおり(2005/08/30 10:47:30)


>今、構造体メンバに変数を格納したいのですが、
>セグメンテーション違反になります。
>*char変数を構造体の*char変数と*int変数に格納したいのですが、
>うまく行きません。キャストなどしてもできません。
>どうしたらいいのでしょうか?

提示されたコードは、私の環境で(おそらく)問題なく動作しました。
C と C++ の差ではないでしょうか?


あと、↓は閉じてくださいね。
http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+22816


この投稿にコメントする

削除パスワード

No.22896

Re:char*型からint*変数に格納する方法
投稿者---shu(2005/08/30 10:50:16)


間違いだらけです。
今のプログラムの修正より、一から作りなおすことをすすめます。

//
    char tt[32], *t ="日本", *s ="1200";
    int st;

    strcpy( tt, t );
    st = atoi( s );



この投稿にコメントする

削除パスワード

No.22897

Re:*char型から*int変数に格納する方法
投稿者---si(2005/08/30 12:51:52)


struct RP in[3];

掲示サンプルは、上記一ヶ所、記入洩れ(struct )ありますが
gcc4 Pen4 では、問題なく動作しますよ。
確認
printf("st = %s\ntt = %x\n",in[0].tt,*in[0].st);
表示
st = 日本
tt = 30303231

問題出るとすれば、文字列を変更しようとしてませんか?

in[0].tt[0] = '\0'; <- セグメンテーション違反です


この投稿にコメントする

削除パスワード

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