如何使用宽字符到多字节删除字符串字符之间的空格?

时间:2013-10-31 11:19:02

标签: c file visual-c++

我在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

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

2 个答案:

答案 0 :(得分:1)

基本上有两种方法:

  1. 从生成的ASCII内容中手动删除空格。

  2. 使用库为您完成工作(当然,如果您被允许)。我倾向于 http://en.wikipedia.org/wiki/Iconv

  3. 其中(如维基百科页面上所述)在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;