c - 如何将一个文本文件一点点分割成两个文件

标签 c file

如何将一个文本文件一点一点地分割成另外两个文件。我需要文件 A 中的所有偶数位和 B 中的所有奇数位。换句话说,如果文件 X 是:

0101010111110000

那么文件 A 将为:00001100 B 为:11111100

然后我需要将它们保存为 .txt 文件。之后,我需要将它们重新合并在一起才能再次获得 X。

我正在使用c。 到目前为止我的代码如下:

#include <stdio.h>

void printchar( unsigned char to_print )
{
    unsigned char mask = 0x80;
    for( int i = 0; i < 8; ++i )
    {
       if( (mask & to_print) > 0 )
       {
           printf( "%d", 1 );
       }
       else
       {
           printf( "%d", 0 );
       }
        mask = mask >> 1;
    }
    printf( "\n" );
}

void split( unsigned char * left, unsigned char * right, unsigned char input1, unsigned char input2 )
{
    unsigned char mask = 0x80;
    for( int i = 0; i < 4; ++i )
    {
        (*left) |= ( (input1 & mask) << i );
        (*left) |= ( (input2 & mask) >> (4-i) );

        mask = mask >> 1;

        (*right) |= ( (input1 & mask) << (i+1) );
        (*right) |= ( (input2 & mask) >> (3-i) );

        mask = mask >> 1;

    }
}

int main (int argc, const char * argv[])
{
    unsigned char left = 0;
    unsigned char right = 0;
    unsigned char input1 = 0xA6;
    unsigned char input2 = 0xB5;

    split( &left, &right, input1, input2 );
    printchar( left );
    printchar( right );
    return 0;
}

最佳答案

逐个字符读取

在您的代码中构建两个缓冲区字符,一个具有偶数位,另一个具有奇数位 要完全构建 2 个字符,您需要从文件中读取 2 个字符 当您从输入文件读取 4 个字符后,您可以写入您构建的 2 个字符 等等

部分采用相同的方法,但相反。 您应该注意读取/写入偶数/奇数位的顺序

关于c - 如何将一个文本文件一点点分割成两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847600/

相关文章:

c - 需要可执行堆栈和堆内存

c++ - 如何改进寻找二项式系数的递归算法

python - 使用 if-return-return 还是 if-else-return 效率更高?

c - 如何使用数组将句子分成单词

c# - 如何在 .NET 中使用真实文件进行集成测试?

ios - 在 iOS 应用程序上保存大文件

c - C中的字符串递增函数

java - 递归删除目录

javascript - 如何通过管道传输到文件(NodeJS)

file - Golang 将服务文件的名称传达给浏览器/客户端