C - wchar_t打印不需要的字符

时间:2016-11-22 08:11:52

标签: c windows wchar-t

我正在尝试列出一个包含非英文字符文件的文件夹。 下面的函数接受一个参数,比如C:\并列出其中的文件。但不是100%正确。对于土耳其语字符,它会打印一些符号,即使我使用wchar_t类型。

void listFolder(const wchar_t* path){
DIR *dir;
struct _wdirent *dp;
wchar_t * file_name;
wchar_t  fullpath[MAX_PATH];
dir = _wopendir(path);

while ((dp=_wreaddir(dir)) != NULL) {
    //printf("[i]debug: \t%s\n", dp->d_name);
    if ( !wcscmp(dp->d_name, L".") || !wcscmp(dp->d_name, L"..") ){
        // do nothing
    } 
    else {
        file_name = dp->d_name; // use it
        wprintf(L"[*]file_name: \t\"%ls\"\n",file_name);
    }
}
_wclosedir(dir);

}

我目前正在使用带有CodeBlocks 16.01的Windows 7 x64

奇怪的是,在Ubuntu 16.04 下使用CodeBlocks完全正常。

1 个答案:

答案 0 :(得分:0)

@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //Here 6 is last position if (position == 6 && positionOffset == 0 && !isLastPageSwiped){ if(counterPageScroll != 0){ isLastPageSwiped=true; //Next Activity here } counterPageScroll++; }else{ counterPageScroll=0; } } 用于ANSI,而不是Unicode。请改用A=[1,2,3]; B=[1,3,2,4]; // Assign the shorter length to the temporary Integer minimum length int minimum_length = (A.length <= B.length) ? A.length : B.length for (int count=0; count < minimum_length; count++) { if (A[count).equals(B[count]) { System.out.println(A[i] + "\t " + B[i]); } else { NumberOfDifference++; System.out.println(A[i] + "--" + B[i]); } //Now you can just add all other integers as differences to the NumberOfDifferences-Object for (int others = A.length; others < B.length; others++) { NumberOfDifferences++; System.out.println("null" + "--" + B[i]); }

Windows对打印Unicode的支持有限。在MinGW中使用DIR *dir打印Unicode。例如:

_WDIR