2013-10-31 30 views
0

我有一個文件在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

在上面的數據中,每個字符之間都有一個空格。如何從數據中刪除空間,並寫入文本文件。請通過編寫一些代碼來解釋寬字符到多字節的例子。提前致謝。

+1

它可能寫成UTF-16字符串(即寬字符)。您可以以寬字符的形式閱讀它,然後將其作爲寬文件處理,或者手動或使用其他格式轉換爲其他格式。 WideCharToMultiByte – Rup

+1

十六進制值表示一個UNICODE字符串。如果你想在一個文本文件中,你可以縮小它爲一個ANSI字符串,如果可能的話,或者你可以打開它作爲unicode文件。我想大多數編輯會自動使用unicode,如果你有一個特定的字節頭文件的第一件事情。 – nvoigt

+0

@Rup:我怎麼能從WideCharToMultiByte轉換它,請通過寫代碼告訴我。 –

回答

1

基本上有2種方式做這件事的:

  1. 從生成的ASCII事情手動刪除空間。

  2. 使用圖書館爲您完成工作(當然,如果您被允許)。我更傾向於去朝 http://en.wikipedia.org/wiki/Iconv

其中(如維基百科頁面上說的)在海灣合作委員會自由的實現,所以你可以嘗試用它玩。 這裏鏈接到Linux的lib: http://www.gnu.org/software/libiconv/#TOCintroduction

UPDATE

這裏是如何使用libiconv的℃的例子: http://www.gnu.org/software/libc/manual/html_node/iconv-Examples.html

0

嘗試使用的strtok()從<字符串。 h>。

相關問題