• ベストアンサー

テキストファイルに書いてあるファイル名を読み込みたいのですが...

ファイルからファイル名の読み込むのに手こずっています. テキストファイルは次のような感じです. file.txt[ 入力ファイル名 "ファイルのパス" サイズ = 640 480 [EOF]] さらにファイルのパスは「Documents and Settings」などのように間にスペースを含んでいます. しょうがないので,["]と["]のあいだを1バイトづつ読み込む方法を採用しています. もっとスマートな方法があれば教えていただきたいです.

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

  • ベストアンサー
回答No.3

#include <stdio.h> int main(void) { char *s = "入力ファイル名 \"ファイルのパス\" サイズ = 640 480"; char p[256]; sscanf(s, "%*[^\"]%*c%[^\"]", p); puts(s); puts(p); return 0; }

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

Cのプログラムとはそういうものです string.hの関数でも基本は1バイトずつ処理しています。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

C前提で回答するのでお使いの言語がC++だとあまり参考にならないですが。 必ず""で括られるのであれば、一旦char配列に読み込んでstrtok()で切り出すのが最も楽ではないかと。 #strtok()は元データを破壊するので(破壊されても問題ない)一時バッファに格納してから使いましょう ここで肝心なのは「機械的に簡単に処理できるようにテキストファイルの書式を定める」ことですね。

関連するQ&A

  • アプリケーションのあるファイル名を取得

    VBプログラミングをしているのですが、 その本体がある場所のファイル名を取得したいのですが、なにかよい方法はあるでしょうか? たとえば 本体.exeまでのフルパスが C:\Documents and Settings\Administrator\My Documents\ファイルA\本体.exe としたら C:\Documents and Settings\Administrator\My Documents\ファイルA までを取得したいのです。 世ろ紙お願いいたします。

  • DOSのバッチで、変数中のファイル名を取り出すには

    DOSのバッチの初心者です。 $FILEという変数に、 C:\Documents and Settings\Administrator\My Documents\okwave.txt のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。 set f=%$FILE% set g=%%~nf echo %g% 上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。

  • 【バッチファイル】コマンド上で書いた文字をテキストに表示

    コマンド上で入力した文字を、元々あるテキスト(メモ帳)に 書き出したいのですが、どなたかご存知の方、ご教授願いますm(_ _)m 例)、 ping 192.168.*.***>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" ipconfig /all>>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" "C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt">notepad.exe ↑で作成したテキストに、サービスタグ(仮に、XTZ1234とします)を追記したい ということです。 よろしくお願いいたします。

  • バッチファイルでCOPYができない。

    バッチファイルを作成するのが初めてでしてうまくいきません。 copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ というコードを実行してみたんですが、 C:\Documents and Settings\(ユーザー名)>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできて、 C:\Documents and Settings>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできません。 (実行する場所によって違うということです) どこで実行してもできるようにしたいのですがどうすればよろしいですか?

  • 空白を含むファイルが開けない

    「c:\Documents and Settings\~.xls」を開こうとすると「Documents and Settings.xlsは開けません、and.xlsは開けません、Settings.xlsは開けません。」等のメッセージが表示されファイルを開けません。 パス、ファイル名に空白を含むファイルを開けなくなっているようなのですがどうすればよいか教えてください。

  • サーバーのテキストファイルをバッチ処理で書き換え

    CORESERVER(コアサーバー)にあるテキストファイルの内容をローカルにあるテキストファイルの内容に書き換えたいと思い、検索で調べて下記のようにしましたが実現できませんでした。 (内容をすべて書き換えます) 解決方法を教えていただければ助かります。 ftpcmd.txtの内容 open s40.coreserver.jp kkkk(ID名) yyyyyy(パスワード) put C:\Documents and Settings\aaa\My Documents\1.txt /virtual/kkkk/public_html/www.(ドメイン)/data.txt bye change.batの内容 ftp -s:ftpcmd.txt >log.txt 2>&1 change.batを実行して生成されたlog.txtの内容 ftp> Connected to s40.coreserver.jp. open s40.coreserver.jp 220 ProFTPD User (s40.coreserver.jp:(none)): 331 Password required for kkkk 230 User kkkk logged in ftp> ftp> C:\Documents and Settings\aaa\My Documents\1.txt /virtual/aaa/public_html/www.(ドメイン)/data.txt bye 221 Goodbye.

  • コマンドプロンプトのコピー関数について

    コマンドプロンプトのcopyのファイル名を記述する部分にファイルのフルパスを使用してみたのですが、「指定されたファイルが見つかりません」となってしまいますが、copyではフルパスは使用できないのでしょうか? エラーになるのは以下のように記述したコマンドです。(a.txtをb.txtにコピー) copy C:\Documents and Settings\a.txt C:\Documents and Settings\b.txt よろしくお願いします。

  • フルパスの中にワイルドカードを使いたい

    ファイル削除のバッチファイルを作成しているのですが、フルパスの中でワイルドカードを使用したいのですが、可能でしょうか? 例として、 C:\Documents and Settings\user\デスクトップ\abc\test.txt C:\Documents and Settings\user\デスクトップ\edf\test.txt C:\Documents and Settings\user\デスクトップ\gh\test.txt を削除させたいです。 別の場所に同名のテキストファイルがあり、それは消したくないので、「*test.txt」とはしたくないです。 試しに下記のようにワイルドカードを使用してみたところNGでした。 del "C:\Documents and Settings\user\デスクトップ\*\test.txt" よろしくお願いします。

  • ExcelVBA+xdoc2txtでデスクトップのファイルをコンバートしたい。

    ExcelVBA+xdoc2txtを使い、以下の手順でPDFをtxtに変換します。 ・xdoc2txt.exeがいるフォルダを指定させる。 ・PDFがいるフォルダを指定させる。 ・以上を組み合わせxdoc2txt.exeを起動する。 この手順ですが、xdoc2txt.exe及びpdfがDドライブ直下などに 存在する場合は実現出来ています。 問題は両者がデスクトップに存在する場合です。 おそらくデスクトップのフルパスがスペースを含んでいるので 上手く行かないではないかと想像しています。 xdoc2txtのヘルプには「※空白を含むファイル名の場合、""で囲ってください」とあるので、例えば、 "C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe -f C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" あるいは C:\Documents and Settings\hogehoge\デスクトップ\xdoc2txt\xdoc2txt.exe -f "C:\Documents and Settings\hogehoge\デスクトップ\PDF\xxx.pdf" という風にダブルコーテーションで囲ってみたのですが、上手く動作しません。 その実現方法についてご教示いただけると幸いです。

  • Cookieファイル名の末尾の数字の意味

    Windows XP、Internet Explorer 7です。 \C\Documents and Settings\<ユーザー名>\cookies にあるファイルを見ていてふと思ったのですが、ファイル名が <ユーザーアカウント名>@<ドメイン名>[#].txt となっており、#のところに1、2、3などの数が入っています。 この1、2、3などの数は何を表しているのでしょうか。

専門家に質問してみよう