フルパスの記述について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
やっかい者

フルパスの記述について

#1

投稿記事 by やっかい者 » 18年前

c:\\windows\\system32\\notepad.exe

パスはこのように記述しますが、実行の時点では\\の部分が何か1バイト文字に
変換されています。

このように記述する意味を教えてください、
実行時に\\は何を基準に変換するのでしょうか?
OSとかマシンとかでしょうか?

ご教授よろしくお願いします。

組木紙織

Re:フルパスの記述について

#2

投稿記事 by 組木紙織 » 18年前

osなどは関係ありません。
c言語では
"\n"→改行
"\t"→タブ
"\\"→\
となります。

やっかい者

Re:フルパスの記述について

#3

投稿記事 by やっかい者 » 18年前

早速の回答ありがとうございます。

改行やタブは制御コードなのでストリングとしてテキストに直接
書き込みできないのですが、\は1バイトのキャラクタ文字で書き込み
可能なのではないでしょうか?

ファイル階層の区切りに\1個ではだめなのですね、\はファイル文字には
使えないので混同する心配もないと想うのですが・・・

いずれにしても、今回の件は実行後にフルパスを指定する場合は
\\を\(0x5C)に置き換えてその後のストリングを前詰めにすればOKでようか?

管理人

Re:フルパスの記述について

#4

投稿記事 by 管理人 » 18年前

すみません、回答していることがご質問の意図と違っていたらスミマセン。
#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:フルパスの記述について

#5

投稿記事 by やっかい者 » 18年前

ありがとうございます。
この課題をビルドして実行ファイルをバイナリーエディタで見ると確かに
\\は\に変換されていました、またパスのストリングの前詰めの
操作は必要なく。
実行時のパス名変更は、その書き込みoffsetに注意が必要のようです

またまたお世話になりました。

閉鎖

“C言語何でも質問掲示板” へ戻る