【发布时间】:2016-12-12 06:56:49
【问题描述】:
我正在编写一个程序,它读取文件并生成每个字节的整数数组,首先我用 .txt 文件证明,然后为每个字母及其对应字节生成 ASCII(例如 ASCII对于 B 是 66,而 66 的二进制是 01000010,我的程序在 .exe 窗口中打印这两个),但我需要用数组的整数(rest [x])制作同一个文件,我可以制作一个新文件 .txt 但它只有垃圾,或者我认为是,file.txt 是新文件 .txt 的名称,它只有垃圾,我想恢复 UAM.txt 中的文本,并写入file.txt 来自数组 rest[x];
#include<stdio.h>
int main()
{
int b1, b2, b3, b4, b5, b6, b7, b8;
int x, i;
char a, b;
FILE *f1, *bin, *fp;
b1 = 0x01; // = 0000 0001
b2 = 0x02; // = 0000 0010
b3 = 0x04; // = 0000 0100
b4 = 0x08; // = 0000 1000
b5 = 0x10; // = 0001 0000
b6 = 0x20; // = 0010 0000
b7 = 0x40; // = 0100 0000
b8 = 0x80; // = 1000 0000
int mask[8] = { b8, b7, b6, b5, b4, b3, b2, b1 };
int rest[8];
f1 = fopen("UAM.txt", "rb");
fp = fopen("file.txt", "w+");
while (!feof(f1))
{
a = getc(f1);
printf("%d\n", a);
for (i = 0; i <= 7; i++)
{
rest[i] = a & mask[i];
}
for (i = 0; i <= 7; i++)
{
rest[i] = rest[i] / mask[i];
}
for (x = 0; x <= 7; x++)
{
printf("%i", rest[x]);
fputc(rest[x], fp);
}
fclose(fp);
printf("\n");
}
return 0;
}
输入文件可以是任何文本,举个简单的例子,我将单词 B 保存在 UAM.txt 中,在 .exe 窗口中我获得了 66 和 01000010,这是十进制和二进制 B 的 ASCII 码,接下来是作为字的字节的二进制数位于整数数组(rest[x])中。我需要再次将此二进制文件转换为字母 B,并将此字母或任何文本保存在我命名为 file.txt 的新文件中,在此文件中必须再次是字母 B,或它在 UAM 中的任何文本.txt 对不起我糟糕的英语!
任何帮助将不胜感激!
【问题讨论】:
-
fclose(fp);在循环内部,这肯定是不好的。顺便说一句 - 发布输入文件和预期输出的简短示例。我的猜测是fputc(rest[x], fp);应该是fputc(rest[x] + '0', fp);但帽子只是一个猜测,因为我不清楚你真正想要什么。 -
int main()-->int main(void) -
输入文件可以是任何文本,举个简单的例子,我将单词 B 保存在 UAM.txt 中,在 .exe 窗口中我获得了 66 和 01000010,这是十进制 B 的 ASCII 码和二进制,接下来作为单词字节的二进制数位于整数数组(rest[x])中。我需要再次将此二进制文件转换为字母 B,并将此字母或任何文本保存在我命名为 file.txt 的新文件中,对不起我的英语不好!
-
好吧,但是您想如何将数字存储到输出文件中呢?作为
01000010字符串?