質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

1462閲覧

複数のプログラム間で同じ値を共有する方法

ccccididid

総合スコア23

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2017/02/01 04:22

編集2017/02/01 04:37

複数のプログラム間で同じ値を共有するためにfileを使おうと考えております。

次のようなコードで行おうと思うのですが思うように動きません。
値を読み込んだxの値が100になって欲しいのですが0となってしまいます。
アドバイスよろしくお願いします。

共有する値設定

c

1FILE *set; 2set = fopen("set","w"); 3fprintf(set,"%d",100); 4fclose(set);

共有する値を読み込み

c

1FILE *set; 2set = fopen("set","r"); 3fscanf(set,"%d",x); 4fclose(set);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2017/02/01 04:31

「思うように動きません」とは具体的にどういう動きを想定していて結果どういう動きになって道程とどう違うのでしょうか? これがわからないと誰にも回答できないと思います。
ccccididid

2017/02/01 04:33

読み込みんだxの値が100になってほしいのですが100になってくれません  内容不足で申し訳ありません
Y.H.

2017/02/01 04:34

「100になってくれません」とは具体的にどうなるのですか?
Y.H.

2017/02/01 04:38

xの型は int型ですか? そうだとして回答を書きました。
guest

回答3

0

ベストアンサー

質問には現象が再現可能な最低限のコードは全て書きましょう。

たぶん、質問者さんのコードはこのように int x;と宣言されていると思います。

C

1int x; 2FILE *set; 3set = fopen("set","r"); 4fscanf(set,"%d",x); // ←ここ 5fclose(set);

fscanf の第3引数でxを渡していますが、以下のように**xのアドレス(ポインタ)**を渡す必要があります。

C

1int x; 2FILE *set; 3set = fopen("set","r"); 4fscanf(set,"%d",&x); // ←ここ 5fclose(set);

xの型がint*であった場合(以下コードのような場合)は
上の回答はすみませんが用をなしません。原因は別にあります。

C

1int y; 2int *x = &y; 3FILE *set; 4set = fopen("set","r"); 5fscanf(set,"%d",x); 6fclose(set);

投稿2017/02/01 04:37

編集2017/02/01 04:50
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一つ考えられるのは、書き込む側のプログラムAと読み込む側のプログラムBが同じディレクトリにない、というくらいでしょうか。
読み書きするファイルが相対パスになっていますから、A の実行時のディレクトリが、Bの実行時のディレクトリと同じでないと、同じファイルを指しません。

読み書きするファイルのパスを絶対パスで記述したらどうなるでしょうか。

投稿2017/02/01 04:35

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

xがint型変数であれば、コード自体には問題ないように見えます。
複数のプログラム間の起動方法に問題があるかも知れません。

「思うように動きません。 」は、現在は具体的にどのようになるのでしょうか?
XXXXXエラーが出る、xに100以外の値が読み出せるなどなど。
エラーが出ている場合はそのエラー・メッセージをコピペして下さい。

投稿2017/02/01 04:30

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2017/02/01 06:40

あああ、xがint型ならscanf("%d", x);はダメですね。見落としました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問