牛、豚、鶏、どれか一つ食べられなくなるとしたら?

下記のソースでは、ホルダーが漢字で無い時は成功するが。
漢字を使うと失敗する。

下記に成功する場合を示す。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(){
char *dir1="C:/Users/usui/mingw";
int ret;

ret=chdir(dir1);
printf("%d\n",ret);
}
上記は、漢字を使っていないので結果は0を表示する。
然し、ホルダーに漢字を使うと-1を表示する。

漢字のホルダーを使う方法をお知えて下さい。
宜しくお願いします。

質問者からの補足コメント

  • うーん・・・

    windows7を使っています。
    gcc --versionの結果は下記です。
    gcc (GCC) 4.8.1
    Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    どうなんかなあ。バージョンが上がっておかしくなったのか。
    バージョンを下げないといけないのか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/03/02 14:26
  • うーん・・・

    先程はコンパイルでエラーになりましたが。
    再度のコンパイルで、今度は、上手く行きました。

    何がおかしかったのだろうか。訳が分からん。
    取り敢えずはこの状態で使って見ます。

    実は、私の使い方と言うのは、最初のでまちがって
    居なかったみたいです。初めての構文だったので
    文法ミスの類も拭い去る事は出来ないので、半信半疑
    でした。

    有難う御座いました。

      補足日時:2017/03/02 19:48

A 回答 (4件)

No3です。


ちなみに私がインストールした(今使っているバージョン)のは、下記URLの
mingw-get-inst-20120426.exe です。
https://sourceforge.net/projects/mingw/files/Old …
    • good
    • 1
この回答へのお礼

有難う御座います。
取り敢えずは、動く事が分かっただけでも今回は
良しとします。又、動かなくなった時はコード関係
を疑って見る事にします。

今回は有難う御座います。
これで終わりとします。

お礼日時:2017/03/02 20:20

>tatsu99様の環境変数の値と確認を取りたいのですが。



環境変数:LANGは特に設定していません。

>実行すると、cp932からutf8の変換に失敗しました。
>のエラーメッセージが出ます。

私も、昨年、このようなエラーがでて、更に調査するとiconvが存在しないことに起因していました。
その為、古いmingwを入れなおした記憶があります。
もしかしたら、iconvを強引にインストールすれば、解決するかもしれません(私はやってたことはないのですが)
    • good
    • 0

>有難う御座います。

sjisを使っています。
>コンパイラーは、mingwのgccを使っています。
>gccは一切漢字は使えないのでしょうか。

gcc ソースファイル --input-charset=cp932 --exec-charset=cp932

のように --input-charset=cp932 --exec-charset=cp932 のオプションをつけて
コンパイルしてみては、どうでしょうか。

昨年、私も、文字コードの変換(cp932->UTF-8)でエラーが発生し、mingwをダウングレードしました。
上記のオプションをつけてもだめなら、ダウングレードしたほうがよいかもしれません。
    • good
    • 0
この回答へのお礼

有難う御座います。
実行すると、cp932からutf8の変換に失敗しました。
のエラーメッセージが出ます。

所で、私の環境変数のLANGの値は、jaになっている
のですが。これって影響をするのでしょうか。

tatsu99様の環境変数の値と確認を取りたいのですが。
宜しくお願いします。

お礼日時:2017/03/02 19:36

こちらの環境では成功します。


-----------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(){
char *dir1="D:/goo/c/漢字フォルダ";
int ret;

ret=chdir(dir1);
printf("%d\n",ret);
printf("%s\n",dir1);
}
--------------------------------------
以下、実行結果です。
D:\goo\c>a.exe
0
D:/goo/c/漢字フォルダ

尚、このソースファイルの漢字コードはシフトJISです。
シフトJISでソースを書いてますか?

windows-7
mingw32(gcc version 4.6.2 (GCC)
で確認しています。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難う御座います。sjisを使っています。
コンパイラーは、mingwのgccを使っています。

gccは一切漢字は使えないのでしょうか。
今回始めてchdirをC言語で使っているので
こんな物なのかと思っている所ですが。

どうなんでしょうか。私がやろうとしている事は
標準では出来ないのだろうか。

お礼日時:2017/03/02 14:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!