更改文件内容

时间:2011-12-22 16:44:22

标签: c file-io while-loop

有人可以为我分解这段代码吗?我知道它会更改用户文件中的文本,我知道它对我来说非常有用。 “〜”的目的是什么?我如何修改此代码以逐字阅读用户文件,然后使用相同的公式更改它?

// first value in the file is the key
if ( fread(&key, sizeof(char), 1, infile) )
{ 
    key = ~key;  
}
while( fread(&fval ,sizeof(short), 1, infile) )
{
      fputc( (fval / 2) - key, outfile );  
} 

2 个答案:

答案 0 :(得分:2)

key = ~key交换密钥

的所有内容

你知道比特吗?

ascii A(65)​​是二进制的100 0001,因此'〜'只需交换1的每个0和{{1}的每个0给出011 1110(62)1

因此,这将使用>替换文档中的所有A,并为所有其他字符替换。关于〜的好处是,它与解密完全相同 - 只需将每个位交换回来。

PS。这不完全是军用密码!

答案 1 :(得分:1)

评论内联!

#include <stdio.h>

int main(void)
{
    /* Integer value of 'A' is 65 and 
       binary value is 01000001 */
    char a='A';      
    printf("a=%d\n", a);

    /* ~a is binary inverse of a so 
       ~01000001 = 10111110 */
    a=~a;
    printf("a=%d\n", a);

    /* easier example */
    /* ~0 = 11111111 times # of bytes needed
       to store int (whose value is nothing 
       but negative one) */

    int i=0;
    printf("i=%d\n", i);

    i=~i;
    printf("i=%d\n", i);

    return 0;
}

$ ./a.out
a=65
a=-66
i=0
i=-1
$

通过上述提示,您可以尝试阅读代码并分享您的意见。

OTOH,crypt是什么?它的类型是什么?存储在其中的值是什么?!

有关更多按位操作,请参阅this页面!