• ベストアンサー

見本のソースを書いて下さい。お願いします。

Fcopy 入力ファイル名1・・・入力ファイル名n 出力ファイル名 次の形のコマンドが与えられたとき、いくつかのファイルを連結し、指定された名前のファイルにその結果を出力するプログラムを作りたいのですが、どうしていいのかサッパリ分かりません。見本のソースを書いて頂きたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mar328
  • ベストアンサー率75% (12/16)
回答No.3

こんにちは。学校の宿題とのことですが、ちょー甘甘で、他の回答者の方から 怒られるかもしれませんが、これっきりということで、助け船です。 (C言語でいいんでしょ?)  プログラムのスケルトン(骨格)のようなものを書きますので、ちゃんと関数 とか文法とかを調べて各処理を書き足せば、だいたいできると思います。 プログラム作成でわかりにくいときは、いきなりその言語で書こうと思わず、 一度、下のように日本語でどんなアルゴリズムにすればいいのかを考えて書いて みて、その後、各処理を実際に言語を使って書いてみるという方法が、わかりや すいと思います。(勉強としてはフローチャートやYACチャートとかの方が後々まで プログラムのアルゴリズムがドキュメントとして残るので、いいのかもしれません が、こういうソース形式で書いた方が実感がわくでしょ?) がんばってね。 int main(int argc, char *argv[]) { char buff[256]; /*引数とその数から、inファイルとoutファイルを区別*/ /*out-ファイルのオープン*/ fopen(out-ファイル, "w"); /*inファイルを順番に数分開いては、buffに読んで書いての繰り返し*/ for(i=0; i<inファイル数分; i++){ fopen(in-ファイル); while( 1 ){ fread(buff, in-ファイル); fwrite(buff, outファイル); /*全部読み書きが終わったらwhileはbreakするよう     freadとかに条件文をいれる*/ } fclose(in-ファイル); } fclose(out-ファイル); exit( 0 ); } ※エラーチェックも忘れずにいれるように! ※ここで表示されるとインデントが消えるみたいなんで、インデントも  自分で書くときにはちゃんと入れてね。

touch_me_8
質問者

お礼

mar328さん、本当にありがとうございます。 今後はこんな質問は決してしないようにします。 ちゃんと、勉強します。

その他の回答 (4)

  • natural
  • ベストアンサー率37% (419/1115)
回答No.5

naturalです。 一足違いで助け船が出てたんですね~。(^_^; そちらを見る前に回答してしまいました。 「ちょー甘甘」、良いのではないでしょうか。(^_^)>mar328さん 教習所でも学校でも色々な先生がいるのですから。 さて、touch_me_8さん、折角mar328さんが提示してくれたヒントです。 しっかり理解してから進めましょうね。 でないと後々応用が利かなくて辛い思いをしますから・・・。 ここからの対応はmar328さんがした方が混乱が少ないと思いますので私は暫く傍観したいと思います。 よろしくお願いします。>mar328さん

touch_me_8
質問者

お礼

naturalさん、本当にありがとうございます。 mar328さんにも言ったことなんですが、これからはこんなことがないようにします。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.4

naturalです。 コメント読みました。 悲しいことですがやはり情報系の教員は人材不足の様ですね。(T^T) あなたが仰っていることもよく解りますが、経験上きっと身にならないと思われるのでやはりそのまま載せるのはやめておきたいと思います。 そのかわり解くための鍵を差し上げましょう。 私が回答する際によく使う手なので他の方が見たら「またか・・・」と思うかも知れませんが、プログラムの流れを示したいと思います。 しかしその前にここだけはテキストで調べてみてください。 Haizyさんも仰っていたargcとargvについてです。(テキストには「メイン関数の引数とか言う項目で載っていると思います) この部分の説明から書き出したらここではあまりにスペースが足りませんので。 調べて基本的な使い方が解ったらコメントに書き込んでください。 (まずは基本的な使い方を。恐らく構造まではまだ理解し難いと思われますので) それが確認出来次第流れの説明をしたいと思います。 尚、基本的な使い方は短めのサンプルソースを追いながら学習するのが理解するためのコツです。 では、頑張ってくださいね。(^_^)

  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

Haizyさんも仰っていますが、課題でしょう? 例えば先生に「解らないから答えを教えてください」と言っても基本的にはヒントを与えることで正解に導いていくはずです。(これが出来ないならば先生失格でしょう) 私たちは先生ではありませんが、状況を見極めることは出来ます。 つまり、教えてしまうのは簡単だけどその人のためにはならないと・・・。 ということで、まずどの辺が解らないのかをはっきりさせましょう。 そして出来れば空欄だらけだったり完成していなくても構わないから、あなたの作ったソース全体または一部を載せて下さい。 それこそが正解を得るための近道です。 #ところでHaizyさん、何故キーボード入力?(^_^; #それと文字列の結合も・・・。 #ただのファイル連結だから1ファイルずつ追記していくだけですよね。 #(間違ってたらごめんなさいね)

touch_me_8
質問者

お礼

ありがとうございます。 もっと、基礎から固めたいんですけど授業が・・・って言っても課題を提出し続けるだけなんですけど。もっと、体系的に勉強したいけどとりあえず課題出さないと。 はっきりいって先生は失格ですよ!! だって、教える気がないもん!大学にはTAって人がいるんですけど全てその人に振るんです。それはいいとして。そのTAに質問しても答えられないし、それで先生が答える分けでもない。かなりあきらめ入りました。 でも、人のソース見て勉強法もありって誰か言ってましたよ。やっぱり、ダメなんですかね。

  • Haizy
  • ベストアンサー率40% (404/988)
回答No.1

内容から見て、課題かな?? 自分でやってください。 「ソースをください」なんて・・・悲しいです。 いくつかのキーワードです。 ・パラメータの受ける状況を作成(argc / arcv) ・ファイルポインタを定義 (FILE *fpxx) ・キーボード入力(scanf など) ・ファイル関数で入力 (fget や、fscanf 等) ・FORループで、パラメータ回数分処理  ・文字列の結合 (文字列 + 文字列 で、文字列連結) ・ファイル関数で出力。(fout や、fprintf)

touch_me_8
質問者

お礼

本当にその通りです。スイマセン!! でも、時間がぁ・・・。言い訳してスミマセンでした。 ヒントありがとうございます。

関連するQ&A

  • ソースを2つ作った場合のとき

    こちらのカテゴリーでは初めて質問させていただきます。宜しくお願いします。 先日からC言語を勉強し始めて、ボーランドから無料配布されているやつをDLし、設定までは終わりました。 それで いざプログラム作成しようとしたのですが次のような状態になってしまいました 【ファイル】→【新規作成】→【プロジェクトタブ】からプロジェクト名 をつける。そのあと【新規作成】→【ファイル】→【C/C++ファイル】でファイル名をつける。 そしてプログラムを作成、コンパイルなどをすると、そのときの実行結果はちゃんと出るのでます。(これをソース1とします。) その後同じように【ファイル】→【新規作成】→【ファイル】でプログラムを作り実行をするとここでもまたちゃんと結果を出ます。(これをソース2とします) そのあと先ほど作ったソース1を見直そうとして、もう一度実行するとそのままソース2の結果が出るのですがこういうときはどうすればよろしいのですか? すごく長々となり申し訳ありません。意味不明だったならばもう一度後で書き直します。 それとプログラミングなどは全くの初心者で本当に申し訳ありませんが宜しくお願いします

  • 名前をつけて保存する

    コマンドライン上に出力された結果を、コマンドライン上でファイル名を指定し、テキストファイルとして保存することは出来ますでしょうか? 作成するファイルは、作業中のフォルダに新規作成する、としたいのですが… たとえば、 カレントディレクトリがC\:/aaaであるとして、 bbb.cを実行したとき、 ----- 以下コマンドライン上の出力 ----- C:\aaa>aaa 1~nまでの素数を表示します nを入力 : 50 1~50までの素数は 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 です。 保存するファイル名を入力 : ccc.txt (ccc.txtと入力してenterを押すと保存) C:\aaa -------------- ここまで -------------- 上記の結果の、『1~nまでの…』から『です。』までを、ccc.txtとしてディレクトリC\:/aaaに新規作成したいのですが… どなたか出来る方がいらっしゃいましたら、ぜひご教授お願い致します。 もし、C言語でこのようなコトをするのは不可能であるのならば、『無理ですよ』という旨を伝えて頂ければ結構でございます。

  • 教えてください。

    問題9 指定されたテキストファイルの先頭のn行を表示せよ。ファイル名と表示行数nは コマンドライン引数として与える。作成したコマンド(プログラム名)をheadとすると、 入力の書式は以下のようになる。 head [-n] ファイル名 表示行数nの指定は省略可能とし、省略時はn=10とする。また、ファイルの内容が n行に満たないときは、すべての行を表示する。 どのようにプログラムをつくればあまりわかりません。教えてください。

  • awkで、キーボードからファイルを指定するには

    私は、awkプログラムを始めたばかりの初心者です。 データファイルがfile1、file2、file3とあって、どのファイルを実行させたいかをキーボードから入力させるには、どのようにすればよいのでしょうか。 次のようなプログラムを作ったのですが、うまくいきません。 { printf "ファイル名?" > "/dev/stderr"#画面表示 getline < "/dev/stdin" #数字入力 aaa = $0 #aaaに代入 } { getline < ("file"aaa".txt") #ファイル入力 print $0 #レコードを出力 } これを、バッジファイルで次のように実行をかけて、「結果.txt」に出力する。 jgawk -f prog.awk con > 結果.txt すると、コマンド画面が消えず、エラーとなってしまいます。 バッジファイルに問題があるのでしょうか。 「-f」の後には、プログラム名、データ名>出力ファイル名 とやるようですが、この場合、データ名が決まっていないわけで、キーボード入力したいのだから、「con」でいいのでしょうか。 プログラムを実行させるのに、ほかに良い方法があるのでしょうか。

  • ソースの作成

    独学でC言語の勉強をしているのですがソースの作成もできません。 テキストファイルの新規作成のボタンを押し、ソースを入力した後、ソースをセーブするには何をすればいいのでしょうか。メニューで、プロジェクト→プロジェクトへ追加→新規作成でC++ソースファイルを選択しプログラム名を入力して作成すると拡張子がcppのファイルができたのですが開いてもソースが見れません。コンパイルしたらエラーも警告もゼロなのですが。また、pathはどのように設定するのでしょうか?

  • makefileの中のソースプログラム指定について

    プログラムをコンパイル・リンクして実行ファイルを作成するためのmakeの利用についてお尋ねします。mekefileを編集してmakeコマンドを投入すればあとは指示通りに実行ファイルを作成してくれるわけですが、ソースプログラムを指示するところではすべてのファイル名を記入する必要があるのでしょうか。それともワイルドカードというか、*.f90のようにフォルダ内のすべての.f90を対象にして処理するように指示できないでしょうか(途中で出力されるオブジェクトファイルもですが)。ソースファイルが小分けにして50個ぐらいあるのですが。よろしくお願いします。 Windows10上でのGnu make ver 4.1です。

  • Cのソースを毎回コンパイルしないと実行結果が見れないのが不便で・・・

    こんにちは。C言語の勉強をしている初心者です。windowsXPでgcc-2.95を使っています。 ソースファイルをメモ帳で作ってから、コマンドプロンプトで入って、gcc sample.c -o sample のようにしてコンパイル?してから、実行ファイルのsampleができて、コマンドラインでsampleと入力して実行結果を確認しています。 でも、勉強中の身なので printf("Hello\n"); の部分を printf("Hello");とか printf("%d", 3);とか printf("%s", "Hello");とか ちょっとずつ書き変えて実行結果がどうなるのかを身ながら学習しています。 ソースファイルの一部分を書き換えて結果を比較したいだけなのに、メモ帳を開いて編集して、またコマンドラインからコンパイル?をして、実行ファイル名で実行という作業を何回も繰り返すので手間がかかって不便だな・・・と感じます。 もっと便利な環境ってないのでしょうか。ソースを書いている状況のままで、試しにプログラムを実行させて結果を比べながら作業できる環境ってないのでしょうか。 この説明で理解してもらえるか不安ですが、ご存知の方教えていただけませんか?

  • cl.exeを呼び出して実行する方法について

    C言語初心者です。基本的な質問で申し訳ございません。 自作コンパイルコマンドのためのコーディング内容を考えてますが、 cl.exeを呼び出して実行する方法がわかりません。 自作コンパイルコマンドで処理したい内容としては、 ・コマンド実行時の引数より、以下の指定を可能にしたいと思います。 - 出力ファイル名を指定するためのオプション名(例: -o) - 出力ファイル名 - ソースファイル名を指定するためのオプション名(例: -f) - ソースファイル名 - ソースの中で定義されているサービス(関数名)を指定するための オプション名(例: -s) - ソースの中で定義されているサービス(関数名) コンパイルコマンド実行時にcl.exeを内部的に実行したいと考えておりますが、cl.exeを呼び出して実行するための方法がわかりません。

  • ソースプログラムでの日本語使用について

    Windows10のパワーシェルでソースプログラムをコンパイルしていますが、そのソースプログラムの出力部で日本語を用いると文字化けてしまいます。出力部とは、C言語だったらprintf, Fortranだったらwrite文です。ここで文字化けを解消するにはどうしたらいいのでしょうか。 パワーシェルは日本語ファイル、フォルダに対応しており、ファイル名が日本語でも問題ないようです。また、ソース内のコメントは日本語でもOKです。ただ、ソースプログラムを実行するとその結果の出力が文字化けてしまうのですが。コンパイラオプションでしょうか。 Rubyはコメントでさえも日本語がUTF8でないとダメとか、いろいろ事情がありそうです。 あるC言語の解説本は冒頭部から思いっきり日本語出力となっており、それが対応できないのです。 使用しているコンパイラはGNU系のもので、gccなどです。よろしくお願いします。

  • ソースファイルの分け方について

    新規登録処理するWebを作るには、 入力フォームと入力後の結果を表示する(これ具体的になんて言うのかなぁ)2つを 必要とすると思いますが、その2つの処理は別々のファイルに書いた方がいいのか それとも1つのファイルで「mode=entry_form」のような変数を使って 場合わけして纏めた方がいいのでしょうか? 新規登録だけじゃなく、もっと大きなプログラムの場合に 最適なソースファイルの分け方の規則のようなものはあるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう