我有一個文件在winhex中打開,看起來像下面。如何刪除使用寬字符到多字節的字符串字符之間的空格?
1F 00 48 3A 18 00 00 00 53 00 70 00 6F 00 75 00 73 00 65 00 5F 00 61 00 7A 00 61 00 6D 00 00 00
我讀從文件上述十六進制數據並將其寫入文本文件。我的代碼如下。
#include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
int main()
{
FILE *pFile, *tempFile;
char *Main_buffer;
int nOfRecord, TotalSize, data=0;
pFile = fopen("C:\\wab files\\Main.wab", "rb");
if(pFile == NULL)
{
fputs("file error", stderr);
exit(1);
}
tempFile = fopen("C:\\myfile.text","wb");
if(tempFile == NULL)
{
fputs("file not open", stderr);
exit(2);
}
fread(&nOfRecord, 1, 4, pFile);
fread(&TotalSize, 1, 4, pFile);
data = TotalSize;
char* Main_buffer = (char*)malloc(data*sizeof(data));
fread(Main_buffer, 1, TotalSize, pFile);
fwrite(Main_buffer, 1, TotalSize, tempFile);
free(Main_buffer);
return 0;
}
該代碼給出了一個文本文件,其中的數據寫入如下。
p a l @ g m a l l。 c 0
在上面的數據中,每個字符之間都有一個空格。如何從數據中刪除空間,並寫入文本文件。請通過編寫一些代碼來解釋寬字符到多字節的例子。提前致謝。
它可能寫成UTF-16字符串(即寬字符)。您可以以寬字符的形式閱讀它,然後將其作爲寬文件處理,或者手動或使用其他格式轉換爲其他格式。 WideCharToMultiByte – Rup
十六進制值表示一個UNICODE字符串。如果你想在一個文本文件中,你可以縮小它爲一個ANSI字符串,如果可能的話,或者你可以打開它作爲unicode文件。我想大多數編輯會自動使用unicode,如果你有一個特定的字節頭文件的第一件事情。 – nvoigt
@Rup:我怎麼能從WideCharToMultiByte轉換它,請通過寫代碼告訴我。 –