掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.27502

\を\\にしたいのです。
投稿者---時空(2006/07/04 19:59:32)


Visual C++ 6.0で
DOSでデスクトップにファイルを作るプログラムを作りたいのですが、
Win32 APIを使いデスクトップの場所が収納されているレジストリキーを
読み込んだのですが、それだと「C:\なんとか\なんとか\デスクトップ」のような値なんですよね。Cでファイルを扱うためには\は\\じゃないといけないと聞いたもので、これだとファイルの操作ができないんです。
\を\\に変更する方法はありませんか?



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:\を\\にしたいのです。 27503 ruby 2006/07/04 20:17:26
<子記事> Re:\を\\にしたいのです。 27504 Hermit 2006/07/04 20:20:05
<子記事> Re:\を\\にしたいのです。 27507 時空 2006/07/04 20:49:11


No.27503

Re:\を\\にしたいのです。
投稿者---ruby(2006/07/04 20:17:26)


>\を\\に変更する方法はありませんか?

fopen("C:\\なんとか\\なんとか\\デスクトップ\\hoge.txt", "w")
のようにしてオープンできるはずです。


この投稿にコメントする

削除パスワード

No.27505

Re:\を\\にしたいのです。
投稿者---ruby(2006/07/04 20:23:46)


>>\を\\に変更する方法はありませんか?
>
>fopen("C:\\なんとか\\なんとか\\デスクトップ\\hoge.txt", "w")
>のようにしてオープンできるはずです。

いささかとんちんかんな回答でした。
レジストリキーの内容が例えば"C:\なんとか\なんとか\デスクトップ\hoge.txt"であれば、
それをどこかの文字列に格納した後、1バイトずつサーチしながら
'\'を'\\'に変換する関数を用意すれば、目的が達成できるのではないでしょうか。

'\'と同じ文字コードがフォルダ区切り以外に現われない、という前提で。


この投稿にコメントする

削除パスワード

No.27504

Re:\を\\にしたいのです。
投稿者---Hermit(2006/07/04 20:20:05)


>Win32 APIを使いデスクトップの場所が収納されているレジストリキーを
>読み込んだのですが、それだと「C:\なんとか\なんとか\デスクトップ」のような値なんですよね。Cでファイルを扱うためには\は\\じゃないといけないと聞いたもので、これだとファイルの操作ができないんです。
>\を\\に変更する方法はありませんか?

読み込んだフォルダー名を、Cのソースに書くのなら、
手動で \ を \\ に書き換えればいいだけだと思いますが、
プログラム上の領域に読み込んで使うのであれば、
そのまま使えるはずですが。

\ を表現するのに、\\ としなければいけないのは、
Cのソースファイル上だけです。


この投稿にコメントする

削除パスワード

No.27506

Re:\を\\にしたいのです。
投稿者---ruby(2006/07/04 20:25:50)


>\ を表現するのに、\\ としなければいけないのは、
>Cのソースファイル上だけです。

あ、そっか。
私の一連のコメントはなかったことにした方がよさそうです。>時空さん


この投稿にコメントする

削除パスワード

No.27507

Re:\を\\にしたいのです。
投稿者---時空(2006/07/04 20:49:11)


皆さんいろいろありがとうございます。
しかしそれはCのソースなのです。
\を\\に書き換えるような関数の存在は知らないし、変数を
かきかえようとすると
変数[1]が"C" [2]が":" [3]が"\" [4567]が"なんとか"だとすると
途中の\は書き換えられないじゃないですか。
どうすればいいですかね。
皆さんすいませんが知識をかしてください!!




この投稿にコメントする

削除パスワード

No.27508

Re:\を\\にしたいのです。
投稿者---ruby(2006/07/04 20:59:27)


>\を\\に書き換えるような関数の存在は知らないし、変数を

自作するのです。

>変数[1]が"C" [2]が":" [3]が"\" [4567]が"なんとか"だとすると
>途中の\は書き換えられないじゃないですか。

"C:\\なんとか"を格納するための領域を、別に用意するのです。


この投稿にコメントする

削除パスワード

No.27509

Re:\を\\にしたいのです。
投稿者---Hermit(2006/07/04 21:15:33)


何をやりたいかよくわかりませんが、
領域が余裕あるなら、
'\' の後の文字の後の文字を1文字ずつずらし、
ずらしたところに '\' をいれればいいだけでは。
領域が足りないなら、別領域を確保して、そこに\\にしながらコピーするだけではないでしょうか。
ただし、ShiftJIS などのように、\ を含む文字がある場合は注意が必要ですが。

とりあえず、うまくいかないソースを書いてからの方が良くないですか?
問題点が見えてこないので。


この投稿にコメントする

削除パスワード

No.27516

Re:\を\\にしたいのです。
投稿者---B(2006/07/05 01:28:00)


エディタで開いて置換すれば。


この投稿にコメントする

削除パスワード

No.27521

Re:\を\\にしたいのです。
投稿者---acid(2006/07/05 09:02:30)


>エディタで開いて置換すれば。
ひどいwww

しかし、何だか自分で考えない人が多いなあ。
こういうの考えるのって楽しいと思うんだが。


この投稿にコメントする

削除パスワード

No.27523

Re:\を\\にしたいのです。
投稿者---asd(2006/07/05 09:16:25)


>Win32 APIを使いデスクトップの場所が収納されているレジストリキーを
>読み込んだのですが、それだと「C:\なんとか\なんとか\デスクトップ」のような値なんですよね。

と言うことは「レジストリキーを(変数とかに)読み込んだ」わけですよね?

>皆さんいろいろありがとうございます。
>しかしそれはCのソースなのです。

あれ?既に読み込んでいるわけじゃないのかなぁ?
最初のと矛盾してる気がします。

>\を\\に書き換えるような関数の存在は知らないし、変数を
>かきかえようとすると
>変数[1]が"C" [2]が":" [3]が"\" [4567]が"なんとか"だとすると
>途中の\は書き換えられないじゃないですか。

さっきはソース上だって言ったのにまた変数?

>どうすればいいですかね。
>皆さんすいませんが知識をかしてください!!

今の段階で貸せる知識はソースの貼り方くらいしかないです。


この投稿にコメントする

削除パスワード

No.27531

Re:\を\\にしたいのです。
投稿者---near(2006/07/05 12:18:34)


ソース中に直接パスを書き込む場合
  ・自分で\を\\にすれば良いだけ。
プログラム中でパスを取得する場合
  ・そのまま利用できるので、変換する必要はありません。



この投稿にコメントする

削除パスワード

No.27533

Re:\を\\にしたいのです。
投稿者---たかぎ(2006/07/05 12:59:44)
http://takagi.in/


>しかしそれはCのソースなのです。

コードジェネレータか何かでしょうか?
それなら出力時に \ の場合は二度書きするとかでもよさそうに思います。

もう少しやりたいことを明確にした方がよいでしょうね。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧