• 締切済み

cのプログラミングについて

wanabe_hikiの回答

回答No.1

これでどうでしょうか? #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 256 #define F "hoge.txt" int main (){ FILE *fp; char s[N]; if( (fp=fopen(F,"r") ) == NULL){ printf("ファイルが開けません。\n"); exit(-1); } //ファイルの内容を読み込み、いったんファイルを閉じる fgets(s,N,fp); fclose(fp); if(strcmp("ABC",s) == 0){ //ファイルの内容が"ABC"だったら、中身を書きかえる if( (fp=fopen(F,"w") ) == NULL){ printf("ファイルが開けません。\n"); exit(-1); } fputs("XYZ",fp); fclose(fp); } } 質問とは関係ありませんが、回答をくれた人には一言返信するのがマナーですよ? 私に対してではなく、tanatos666さんが過去にした質問に対して回答してくれた人へのことを言っています。

tanatos666
質問者

お礼

ご忠告ありがとうございます。 プログラムのほうも回答してくれてありがとうございます。 ぜひ参考にさせていただきます。

関連するQ&A

  • Excel VBAでの固定長のテキストファイル読み込み

    こんにちは。 会社にてEXCELをちょろっとかじっていると言う理由から、あまり触ったことのないVBAを使って固定長のテキストファイルを読み込むプログラムを作るように言われてしまって困っています。 利用している固定長のテキストファイル中の各行の桁数は同一でなく、行によってまちまち。しかし、各行の始めの3ケタはヘッダになっています。 例) ABCTTTTTTTTTTTTTTTTKKKKKOOOOOOPPPPPPPPWWWWWWWWWWWWWWWWWWWWWWWSS XYZLLLLL <ABCとXYZがヘッダ。同じ文字が固定長で決まったあるデータ項目と考えて下さい> もちろん、1ファイルにはもっとたくさんの行がずらずら並んでおります。 中身自体は、ある伝票の内容なのですが、1ファイル中には複数の伝票内容(ヘッダABC~XYZで1伝票)が記されております。 なので、ヘッダで言うとABC,DEF,GHI...XYZとなってまたABC~が続く。 しかも、ある伝票では途中存在しないヘッダがあったり、同じヘッダが何回も繰り返されたりするものもあります。 (ABC,DEF,DEF,DEF,GHI..やABC,GHI,JKL..など) これをどうやってEXCELの各セルに貼り付けるかがどう頑張っても分かりません。どうすればよいのでしょうか?

  • こんにちは。

    こんにちは。 会社にてEXCELをちょろっとかじっていると言う理由から、あまり触ったことのないVBAを使って固定長のテキストファイルを読み込むプログラムを作るように言われてしまって困っています。 利用している固定長のテキストファイル中の各行の桁数は同一でなく、行によってまちまち。しかし、各行の始めの3ケタはヘッダになっています。 例) ABCTTTTTTTTTTTTTTTTKKKKKOOOOOOPPPPPPPPWWWWWWWWWWWWWWWWWWWWWWWSS XYZLLLLL <ABCとXYZがヘッダ。同じ文字が固定長で決まったあるデータ項目と考えて下さい> もちろん、1ファイルにはもっとたくさんの行がずらずら並んでおります。 中身自体は、ある伝票の内容なのですが、1ファイル中には複数の伝票内容(ヘッダABC~XYZで1伝票)が記されております。 なので、ヘッダで言うとABC,DEF,GHI...XYZとなってまたABC~が続く。 しかも、ある伝票では途中存在しないヘッダがあったり、同じヘッダが何回も繰り返されたりするものもあります。 (ABC,DEF,DEF,DEF,GHI..やABC,GHI,JKL..など) これをどうやってEXCELの各セルに貼り付けるかがどう頑張っても分かりません。どうすればよいのでしょうか?

  • perlで変数の中身を変数とみなす方法ってありますか?

    perlで、変数の中身を変数とみなし、その中身を知る方法ってありますか? 具体的に言うと、 $abc = "$xyz"; $xyz = "test"; なる状況だったとして、$abc から "test" という文字列にたどりつく 方法ってあるのでしょうか? 何をしたいのかというと、テキストファイル上に "$xyz" と書かれてたと します。そのテキストファイルを perl で解読したとき、その時点での 実行中の $xyz に何が入っているかを得たいのです。 もちろん、連想配列を使えば似たようなことができるのは知っていますが、 性質上、できればスタティック変数を使いたいのです。 そのような方法は、perl には用意されているのでしょうか?

    • ベストアンサー
    • Perl
  • ファイル内の改行を削除し1行にするシェル

    お世話になっております。 ファイル(テキスト)内には、改行を含んだ複数の行が記述されています。 これを1行にして上書き保存するシェルを実行をするための シェルを作成したいと思っています。 ファイル内には以下のような値が改行を含んで入っています。 123 456 789 →これを、「123456789」と改行を取り除き、既存のファイルの上書き保存をしたい なお、改行を含んだ対象のファイルは、ファイル名にある文字を含む ファイルのみに対して行いたいのですが。 例:ファイル名に、「*abc*」、「*def*」、「*xyz*」を含むファイルが対象 改行を取り除くコマンドはわかるのですが、シェルにするプロセスがわかりません。 cat 入力ファイル名 | tr -d '\n' > 変換後の出力ファイル名 ご教授いただきたく、よろしくお願いします。

  • 日付順にテキストを開いて書き込むエクセルマクロ

    あるフォルダの中に「abc#1xyz_201308.txt」という形のテキストファイルがあり、 ボタンを押すと、直近1年分のファイルに対して中身のデータをシート3に書き込むような マクロを作りたいのですが、直近1年分のものに対して所定の操作を行うやり方が分かりません 例として、「C:\Users\Owner\Documents」に「abc#1xyz_201308.txt」の形のファイルが 1年以上分ある場合で教えていただけますか? (テキストは日付以外は同じ名前、つまりabc#1xyz_201307.txtやabc#1xyz_201306.txtが存在し それ以外の名前のものはこのフォルダにはありません。またフォルダ内には順番通り入っていませんが シートに書き込むのは古いものから順にしたいです)

  • C言語のファイル出力について

    C言語のfprintfによるファイル出力について教えてください。 fprintfで、下記の例のように、上書きする行を指定することはできますでしょうか? 出力ファイルは.csv形式で、モードは問いません。 例:既に、sample.csvというファイルがあり、中身が、 0 0 0 1 1 1 2 2 2 とします。プログラムのfprintfで、3 3 3という出力を2行目に上書きし、 0 0 0 3 3 3 2 2 2 と変更する。 もし上記の方法をご存知でしたら、ご教授いただけましたら幸いです。 よろしくお願いいたします。

  • Javaなどのプログラミング言語を使用して、テキスト(.txt)の書き

    Javaなどのプログラミング言語を使用して、テキスト(.txt)の書き換えをしたいのですが... Javaなどのプログラミング言語を使用して、テキスト(.txt)の書き換えをしたいのですが、 どのようなプログラムを作ればよいかわかりません... ただ文字列置換するだけではなく、文字列の一部を変数として使いたいです! たとえば、 元のファイルで、 xyz(1, 1) = -.589500D+00 xyz(2, 1) = 0.387000D+00 xyz(3, 1) = -.168750D+01 とあったときに、変数n,x,dを用いて、xyz(1, n) = xDdという感じで読み込みたいのですが。 読み込んだ後は文字列を置換して、n,x,dをしようしたいと考えています。 どなたかやり方をご存知でしたら、どうか教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • VisualC++6.0 で main関数への引数

    #include<stdio.h> int main(int argc,char *argv[]) {   FILE *fp;   fp=fopen("abc.txt","w"); } こんな感じの xyz という名前のプログラムがあります。 MS-DOSで、xyzと同じディレクトリから   xyz tekitou リターン と打ち込んでプログラムを起動させたらxyzと同じディレクトリの中に abc.txtを作成してくれます。xyz.exeのダブルクリック起動でも 同様の結果です。 だけどxyz.exeのアイコンの上に適当なファイルを ドラッグ&ドロップさせて起動させた場合 abc.txtは全然別の場所に作成されてしまいます。 正確に言うと、Windows98上でVisualC++6.0を使用して 上記のプログラムでデスクトップ上にxyz.exeを作成して (C:\WINDOWS\デスクトップ\xyz.exeの)アイコンに 適当なファイルをD&Dしてプログラムを実行したらC:\にabc.txtが できたということです。 私としては同じディレクトリ内に作成してくれなくては 都合が悪いのです。この現象が起きる理由あるいは 解決法をご存知の方がいらっしゃいましたらどうかよろしく お願いします。

  • diffコマンドにてテキスト出力

    こんばんは。教えてください! 以下のような2つのファイルがあるとします。 ・aaa.txt abc111 abc222 abc333 ・bbb.txt abc333 abc444 これを比較して、比較結果をテキスト出力したいです。 テキスト出力したい比較結果は (1)重複しているもの全てテキスト出力 (2)aaa.txtのみにあるものをテキスト出力 (3)bbb.txtのみにあるものをテキスト出力 また、(1)~(3)は別々のファイルに出力したいです。 diffコマンドで、 diff a.txt b.txt >> c.txt とすると、 1つのテキストファイル(c.txt)に (1)~(3)すべてが書かれてしまいます。 環境は、windows XPにてCygwinを使用しています。 diffコマンドでなくても構いません。 宜しくお願いします。

  • 文字列の括弧について(初心者)

    textに自分で入力した値を変数文字列として扱う場合に、括弧を使いたいのですが、 例 Dim A as string Dim B as string A = Text1.text B = "abc" としてコマンドボタンを押したときにAとBの値が同じ場合(Aがabc)は1をAとBの値が違うときは0を出力するプログラムを作ったのですが、これに追加で括弧()や[]をつけても1を出力するプログラムが作りたいのですが、よくわかりません。 Text1.textの値が(abc)か[abc]でも1を出力、 [ab]cやa(b)cでも1を出力、(abcやa)bc(やa(b(cのときは0を出力するプログラムが作りたいのです。 どうか教えてください。 おねがいします。