コンパイル~実行について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マサキ

コンパイル~実行について

#1

投稿記事 by マサキ » 18年前

現在Windows上でシグウィンを使いながら、プログラミングを行っています。
そこで、わからないことがあったので質問させていただきます。

まず、ファイル名 file_post に 
3.2 2 + 4 -
という数値が保存されているファイルがあります。
そして、逆ポーランド記法の評価をするプログラムとして、calc_postfix.c というプログラムがあります。
一応、このプログラムは添付させておきます。
本来、このプログラムは標準入力から数値を読み取り、結果を表示させるものです。
しかし、標準入力からではなく、file_postから数値を読み取り、結果を表示させるにはどうすればいいいのでしょう??
私は 
$gcc calc_postfix.c < file_ppost
とし、実行してみたところセグメントエラーになってしましました。
何処が間違っているのかわかりません。
もしわかるかたがいたら、教えてくださると助かります。
宜しくお願いします。

マサキ

Re:コンパイル~実行について

#2

投稿記事 by マサキ » 18年前

訂正:
$gcc calc_postfix.c < file_ppost を $gcc calc_postfix.c < file_post

余分にpが一つついていました。

box

Re:コンパイル~実行について

#3

投稿記事 by box » 18年前

> $gcc calc_postfix.c < file_ppost

実行の仕方が正しくないのではないでしょうか?

gccで実行ファイルを作った後、
実行ファイル名 < file_post <Return>
のように実行すればよいのではないかと思います。

ところで、ソースコードの中に気になる点がいくつかあります。
1)isdigit()を使っていますので、ctype.hをインクルードしてください。
2)pop()の戻り値はint型でよいのでしょうか?例としてあげられた計算の結果が正しくないですよね。
3)pop()の中で実行しているfree()は必要でしょうか?
  引数のcは、動的に確保した領域を指すポインタではありません。

マサキ

Re:コンパイル~実行について

#4

投稿記事 by マサキ » 18年前

たしかにそうですよね^^; まだまだ初心者なので申し訳ありません。
返し値がint型だと、小数点以下が無視されてしまいますからね......
教えてくれてありがとうございました。

ところで、
$gcc calc_postfix.c
$callc_postfix < file_post <Return>
と実行しましたところ
bash:syntax error near unexpected token 'newline'
と出てきてしまいました。
またどこか間違っているのでしょうか??
宜しくお願いいたします。

box

Re:コンパイル~実行について

#5

投稿記事 by box » 18年前

> $gcc calc_postfix.c
> $callc_postfix < file_post <Return>

実行時のプログラム名でエルが1つ多いのは、
投稿時のちょっとした手違いですか?
それとも、本当にこのようにして実行しましたか?

Hermit

Re:コンパイル~実行について

#6

投稿記事 by Hermit » 18年前

bash のエラー出力がよくわかりませんが、

gcc calc_postfix.c
としたばあい、実行ファイルは、同じフォルダー中の、a.out.exe になるんじゃなかったっけ?

で実行するには、
./a.out < file_post
でなかったかと・・・
最近 cygwin 使ってないので違ってたらゴメンね。

box

Re:コンパイル~実行について

#7

投稿記事 by box » 18年前

Hermitさんがお書きになったとおり、
作成する実行ファイル名を明示的に指定していないので、
実行ファイルにはデフォルトの名前が付いているのかもしれないですね。

フォルダの内容を確認してみてください。>マサキさん

マサキ

Re:コンパイル~実行について

#8

投稿記事 by マサキ » 18年前

>>boxさん
lが一つ多いのは、投稿時の手違いです。紛らわしくて申し訳ないです。

また、
$gcc calc_postfix.c
$./a.out < file_post
とやってもできませんでしたが、
$gcc calc_postfix.c
$./a.exe < file_post
としたら、正しく答えが出力されました。
boxさん、Hermitさん、親切に教えてくれてありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る