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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1508閲覧

tab区切りで並べられた数字の中から3つ目の数字が0より大きいものと小さいものを選別したい。

Poi_Poi

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/12/24 03:35

###前提・実現したいこと
c言語で3つずつの数字がtab区切りで並べられた中から3つ目の数字が0より大きいものと小さいものを選別したい。

###発生している問題・エラーメッセージ
コンパイルはできたが実行するとセグメンテーション違反となる。

###該当のソースコード

#include <stdio.h> #include <stdlib.h> FILE *fr0; char *read_file="dmun1Kplot00.dat"; FILE *fw0,*fw1; char *write_file0="dmun1Kplot00p.dat"; char *write_file1="dmun1Kplot00m.dat"; long x, y, z; void main(){ while (fscanf(fr0,"%ld %ld %ld",&x,&y,&z) != EOF) { if (z >= 0) { fw0 = fopen(write_file0,"w"); fprintf(fw0,"%ld %ld %ld",&x,&y,&z); fclose(fw0); }else{ fw1 = fopen(write_file1,"w"); fprintf(fw1,"%ld %ld %ld",&x,&y,&z); fclose(fw1); } fclose(fr0); } }

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

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

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

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

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

ozwk

2016/12/25 05:20

タグ間違えてますよ
guest

回答1

0

ベストアンサー

入力ファイルをオープンし忘れているためfr0がNULLのままです。それがsegmentation faultの原因でしょう。

標準入力から入力したいなら自分でわざわざオープンするまでもなく、オープン済みのFILE*値としてstdinが使えますので、fscanf(stdin, ...)あるいはscanfを使えばよいと思います。

投稿2016/12/24 03:51

KSwordOfHaste

総合スコア18394

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

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

Poi_Poi

2016/12/25 04:23

初歩的なミスでした。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問