【发布时间】:2017-07-10 08:58:59
【问题描述】:
我正在编写一个程序,用随机数对文件中的字符求和,然后减去以再次获取文件。
问题是当我将它们相加和相减时,得到的文件不一样。
可能是我的数学不好或我对字符一无所知。
求和代码(已编辑):
while (!feof(filename))
{
size_t read = fread(&buf, sizeof(char), max_array, filename);
for (unsigned long long i = 0; i < read; i++)
{
unsigned char rdn = GetRandom_Soft();
/*
if (buf[i] + rdn > 255) buf[i] = (buf[i] + rdn) - 255;
else buf[i] = buf[i] + rdn;
*/
buf[i] = buf[i] + rdn;
num[i] = rdn;
}
fwrite(&num, sizeof(char), read, filename_n);
fwrite(&buf, sizeof(char), read, filename2);
}
代码GetRandom()(已编辑):
int GetRandom_Soft()
{
return rand() % 256;
}
要减去的代码(已编辑):
while (!feof(filename2))
{
size_t read_c = fread(&num, sizeof(char), max_array, filename_n);
fread(&buf, sizeof(char), max_array, filename2);
for (unsigned long long i = 0; i < read_c; i++)
{
buf[i] = buf[i] - num[i];
/*
if(buf[i] - num[i] < 0) buf[i] = (buf[i] - num[i]) +255;
else buf[i] = buf[i] - num[i];
*/
}
fwrite(&buf, sizeof(char), read_c, filename);
}
*********更新1*********
filename = 指向原始文件的文件指针
filename_n = 带有数字的文件的文件指针
filename2 = 指向具有filename 和filename_n 和的文件的文件指针
*********更新2(已编辑)*********
chars数组的声明:
int num[9999]
int buf[9999]
int rdn[9999]
【问题讨论】:
-
你用二进制模式打开文件吗?
-
filename、filename_n和filename2是什么? -
没有所谓的 C/C++。如果您使用的是 C++ 编译器,那么您使用的是 C++。虽然您的代码 sn-p 看起来更像 C
-
@Samega7Cattac 你应该发一个minimal reproducible example。