アプリ版:「スタンプのみでお礼する」機能のリリースについて

コンパイル時に a.out と入力するとエラーが出てしまいます。

テキストファイルを複数 (最大で255個) 書き込むC言語のプログラム「f.c」を作成しまして
それらのファイルは全て cygwin/home という場所に保存されます。

ただ、ファイルの中身は多くの文字が並ぶので(最大 500列 × 70000行 程度)
全てのファイルを書き込むには時間がかかりすぎてしまいます。

a.out を使って プログラム内にある

scanf("a=", &a);
scanf("b=", &b);

これらの変数 a,b を出力し
実行結果で書き込まれるファイルを
データとして出力する方法が知りたいのですが
(この方法をバッチ処理というのでしょうか?)

$ cc f.c (← 実行結果の際のコンパイル)

その次に
a.out と入力するとエラーが起きます。

a.out の使い方や意味を調べてもいまいち理解し難く困っております。

さきほど言った scanf で値を決める a,b を プログラム内で決めるのではなく
a.out a b
と入力してデータを出力させるには
どのようにすればよいのでしょうか?
なぜエラーしてしまうのかも教えて頂けないでしょうか?

長々と質問してしまいすみません。
どうか ご回答 よろしくお願いします。

A 回答 (3件)

「ファイルの中身は多くの文字が並ぶので(最大 500列 × 70000行 程度)全てのファイルを書き込むには時間がかかりすぎてしまいます。


といったところで, 内容を全部書かないわけにはいかないよね? だとしたら, 何をどう高速化したところでそのための時間は絶対に必要.
最低限「現状どのようにしているのか」が分からなければ答えようもありません.
「a.out を使って プログラム内にある
scanf("a=", &a);
scanf("b=", &b);
これらの変数 a,b を出力し
実行結果で書き込まれるファイルを
データとして出力する方法が知りたい」
が何を言っているのかよくわからんし, そもそもこの scanf は間違ってる.
    • good
    • 0

ちょっと誤解があるような。



コマンドライン引数 (a.out a b みたいな使い方)にも、バッチ処理(シェルを使ったものはシェルスクリプトと呼びます)にも、処理を高速にするような機能はありません。

あらかじめ実行したいコマンドを全て書いて、自動で実行させることで、実行終了を待って次のコマンドを入力して...とやる手間が無くなって、その時間別のことをしていてもよい、という意味で、時間を有効に使うことはできますが。
    • good
    • 0
この回答へのお礼

コマンドライン引数とバッチ処理を誤解していました。
a.out という単語こだわっていましたが
高速で書き込みできる方法さえあれば、どのような方法でも良いので
その処理法を調べてみたいと思います。
ご回答、ありがとうございます。

お礼日時:2010/11/04 23:24

> a.out と入力するとエラーが起きます。



まず、次の点をはっきりしてください
このような質問をする時の基本です。
・あなたがその作業をしたのは、どんな環境ですか?
OSはなんですか?なにかのソフトを動かしてますか?

・その「エラーが起き」たときに、画面にどんなエラーメッセージが表示されますか?
どんなエラーでも、まずはエラーメッセージを読むことが解決への第一歩です。
そのメッセージによっては、まったく逆の対処法が必要な場合もあるのです。


質問から推測すると....

cygwin/home というディレクトリから、Windows上でCygwin環境で作業しているのだと思われます。
・CygwinのCコンパイラ(gcc, ccはgccの別名として登録されている)が出力する実行形式のファイルは、通常は、拡張子がexeになります。オプション無しで実行したなら、a.exeになります。
a.outではありません。

・エラーメッセージは「command not found」ではないでしょうか?
このメッセージは読んだ通りの「コマンドが見付からない」エラーです。
ファイルa.outが無いのですから、あたりまえです。

このメッセージを読んだら、まずは ls でファイルがあるかどうかを確認するのが、普通でしょう。
そうすれば、a.outなど無くて、a.exeがあることに気付いたはずです。

・a.exeにしても、やはりエラーになることが予想されます。
Cygwin環境での動作はUnix環境に準じます。
Unix系OSでは、『明記しない限り、カレントディレクリにある実行ファイルを実行しません』
Windowsのコマンドプロンプトだと、実行ファイルと同じディレクトリにCDすれば、実行ファイル名だけで実行できます。
しかし、Unix系の環境では、
./a.exe
のように、「カレントディレクトリの実行ファイル」であることを明示する必要があります。


以上のことは、推測して書きました。
しかし、コンパイラや実行環境やエラーメッセージが違えば、まったく役に立たない情報です。


>a.out a b
>と入力してデータを出力させるには
>どのようにすればよいのでしょうか?

コマンドライン引数 argv argc main関数
と言ったキーワードで検索してください。
    • good
    • 0
この回答へのお礼

環境は全て ご推測どおりです。
質問が不十分だった点については反省し、今後気をつけたいと思います。
./a.exe で実行はできるのですが
ファイルの書き込みのスピードを上げるために
どういう処理をすればよいのか困っていました。
調べたところ、 a.out バッチ という単語が出てきたので
どのように扱えば良いのかを更に調べたのですが分からず終いで質問しました。

コマンドライン引数 argv argc main関数 という単語を調べてみます。

お礼日時:2010/11/04 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!