c:\\windows\\system32\\notepad.exe
パスはこのように記述しますが、実行の時点では\\の部分が何か1バイト文字に
変換されています。
このように記述する意味を教えてください、
実行時に\\は何を基準に変換するのでしょうか?
OSとかマシンとかでしょうか?
ご教授よろしくお願いします。
フルパスの記述について
Re:フルパスの記述について
早速の回答ありがとうございます。
改行やタブは制御コードなのでストリングとしてテキストに直接
書き込みできないのですが、\は1バイトのキャラクタ文字で書き込み
可能なのではないでしょうか?
ファイル階層の区切りに\1個ではだめなのですね、\はファイル文字には
使えないので混同する心配もないと想うのですが・・・
いずれにしても、今回の件は実行後にフルパスを指定する場合は
\\を\(0x5C)に置き換えてその後のストリングを前詰めにすればOKでようか?
改行やタブは制御コードなのでストリングとしてテキストに直接
書き込みできないのですが、\は1バイトのキャラクタ文字で書き込み
可能なのではないでしょうか?
ファイル階層の区切りに\1個ではだめなのですね、\はファイル文字には
使えないので混同する心配もないと想うのですが・・・
いずれにしても、今回の件は実行後にフルパスを指定する場合は
\\を\(0x5C)に置き換えてその後のストリングを前詰めにすればOKでようか?
Re:フルパスの記述について
すみません、回答していることがご質問の意図と違っていたらスミマセン。
\\は\に変換されて、1バイトとなります。
そもそも文字は全部文字コードで管理されていますから、
http://hp.vector.co.jp/authors/VA008536/data/ascii.html
>\は1バイトのキャラクタ文字で書き込み 可能なのではないでしょうか?
サンプルの通り、\\とかけば\に変換されますから、書き込みできますよ。
2つ続けたいのなら4つ書けばいいと思います。
#include <stdio.h> void main(){ printf("%d\n",'\0'); printf("%d\n",'\n'); printf("%d\n",'\t'); printf("%d\n",'\\'); char st[3]; st[0]='\\'; st[1]='\\'; st[2]='\0'; printf("%s\n",st); } 実行結果 0 10 9 92 \\ご質問の意図をはっきり理解していないのですが、
\\は\に変換されて、1バイトとなります。
そもそも文字は全部文字コードで管理されていますから、
http://hp.vector.co.jp/authors/VA008536/data/ascii.html
>\は1バイトのキャラクタ文字で書き込み 可能なのではないでしょうか?
サンプルの通り、\\とかけば\に変換されますから、書き込みできますよ。
2つ続けたいのなら4つ書けばいいと思います。
Re:フルパスの記述について
ありがとうございます。
この課題をビルドして実行ファイルをバイナリーエディタで見ると確かに
\\は\に変換されていました、またパスのストリングの前詰めの
操作は必要なく。
実行時のパス名変更は、その書き込みoffsetに注意が必要のようです
またまたお世話になりました。
この課題をビルドして実行ファイルをバイナリーエディタで見ると確かに
\\は\に変換されていました、またパスのストリングの前詰めの
操作は必要なく。
実行時のパス名変更は、その書き込みoffsetに注意が必要のようです
またまたお世話になりました。