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;
}

此代码给出了一个文本文件,其中数据写入如下。

朋友@gmail。合作

在上面的数据中,每个字符之间都有一个空格。如何从数据中删除空间,并写入文本文件。请通过编写一些代码作为从宽字符到多字节的示例来解释。提前谢谢你。

4

2 回答 2

1

基本上有两种方法:

  1. 从生成的 ASCII 事物中手动删除空格。

  2. 使用图书馆为您完成工作(当然,如果您被允许)。我更喜欢 http://en.wikipedia.org/wiki/Iconv

其中(如维基百科页面上所说)在 GCC 中有一个免费实现,因此您可以尝试使用它。这里是 Linux 库的链接: http ://www.gnu.org/software/libiconv/#TOCintroduction

更新

下面是如何使用 libiconv 的 C 语言示例: http ://www.gnu.org/software/libc/manual/html_node/iconv-Examples.html

于 2013-10-31T11:57:07.010 回答
0

尝试使用 <string.h> 中的 strtok() 。

于 2013-10-31T12:50:04.940 回答