如何将文本文件逐位拆分为两个文件

时间:2012-10-11 20:03:54

标签: 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;
}

1 个答案:

答案 0 :(得分:0)

通过char

读取char

在你的代码中构建两个缓冲区字符,一个用偶数,另一个用奇数位 要完全构建2个字符,您需要从文件中读取2个字符 当您从输入文件中读取4个字符时,您可以编写已构建的2个字符 所以一个

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