我在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 i l。 c o
在上面的数据中,每个角色之间都有一个空格。如何从数据中删除空格,并写入文本文件。请通过编写一些代码作为宽字符到多字节的示例来解释。提前谢谢你。
答案 0 :(得分:1)
基本上有两种方法:
从生成的ASCII内容中手动删除空格。
使用库为您完成工作(当然,如果您被允许)。我倾向于 http://en.wikipedia.org/wiki/Iconv
其中(如维基百科页面上所述)在GCC中有免费实现,因此您可以尝试使用它。 这里是Linux lib的链接: http://www.gnu.org/software/libiconv/#TOCintroduction
<强>更新强>
以下是C中如何使用libiconv的示例: http://www.gnu.org/software/libc/manual/html_node/iconv-Examples.html
答案 1 :(得分:0)
尝试使用&lt;中的strtok() string.h&gt;