1

私はWCHARの配列を1つ持っていますが、このようなものです

WCHAR Path[256];

したがって、この配列を関数に渡し、getpath(Path)次のようにパスに値を入力しています:

//device/systemName/

したがって、上記の文字列からデバイスのみを取得したいと思います。

私のコードはここにあります:

   WCHAR *pDevName;

   int i = 0;
   int j = 0;

   while(Path[i] != NULL){ 
     if(0 ==(wcscmp(Path, L"/")))
     {

        //i = i + 2;
         ++i;
        continue;
    }

    else
    {
        pDevName[j] = Path[i];

        ++i;
        ++j;
        if (0 == wcscmp(Path, L"/")){
            break;
        }
    }

私のコードはコンパイルされていますが、WCHAR 配列からデバイスが返されません。//devicename/systemName/から来ている を返していpDevNameます。

での比較に疑問がありwcscmp()ます。だから私の質問は、 / を残りの wchar 配列値と比較する方法です。

4

2 に答える 2

1

wcscmp文字ではなく文字列を比較ます。また、毎回同じアドレスを - に渡しています。これは、文字列全体を「/」と比較するだけで、常に失敗することを意味します。wcscmpPath

単一の文字をテストしたい場合は、その値を直接比較するだけです。次に例を示します。

WCHAR *pDevName;
// NB: I assume you are allocating pDevName and just left that out of the code
// for brevity.
int i = 0;
int j = 0;

while(Path[i] != L'\0'){ 
 if(Path[i] == L'/')
 {
     ++i;
    continue;
 }
 else
 {
    // NB: you should check for overflow of pDevName here
    pDevName[j++] = Path[i++];
    if (Path[i] == L'/')
        break;
 }
}
于 2013-07-10T05:51:26.720 に答える