我有一个文件在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转换它,请通过写代码告诉我。 –