文件结束后,短文件上的 C fread() 会产生垃圾
C fread() on short file is producing junk after the file ends
我的教授指定 file_1.txt
一次读取 100
个字节到 char array
中。我生成了以下代码片段:
int key;
key = atoi(argv[1]);
FILE *file_pointer;
file_pointer = fopen(argv[2], "rb");
char buffer[100];
char output[sizeof(int)][100];
int output_counter = 0;
int read_counter;
int read_elements;
while(read_elements = fread(buffer, 1, 100, file_pointer) > 0)
{
read_counter = 0;
while(read_counter < 100)
{
printf("xor'ing %d and %d\n", key, buffer[read_counter]);
output[output_counter][read_counter] = buffer[read_counter] ^ key;
read_counter = read_counter + 1;
}
output_counter = output_counter + 1;
}
fclose(file_pointer);
file_1.txt
读作:"test file for the project\n"。我用了 gcc
encrypt.c
然后:
./a.out 111 file_1.txt file_2.txt
然后:
./a.out111file_2.txtfile_3.txt
cat file_3.txt reads:
项目的测试文件:
v▒▒▒s▒▒@////////▒
在 file_1.txt
和 file_2.txt
程序的第一个 运行 期间,嵌套 while 循环中打印语句:
xor'ing 111 and 116
xor'ing 111 and 101
xor'ing 111 and 115
xor'ing 111 and 116
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 105
xor'ing 111 and 108
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 111
xor'ing 111 and 114
xor'ing 111 and 32
xor'ing 111 and 116
xor'ing 111 and 104
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 112
xor'ing 111 and 114
xor'ing 111 and 111
xor'ing 111 and 106
xor'ing 111 and 101
xor'ing 111 and 99
xor'ing 111 and 116
xor'ing 111 and 10
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 118
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -88
xor'ing 111 and -31
xor'ing 111 and -94
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -57
xor'ing 111 and 115
xor'ing 111 and -33
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 1
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -19
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -96
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
这些 random
元素来自哪里?
在使用 fread() 之前将缓冲区 char 数组的所有元素初始化为 0 摆脱垃圾。
我的教授指定 file_1.txt
一次读取 100
个字节到 char array
中。我生成了以下代码片段:
int key;
key = atoi(argv[1]);
FILE *file_pointer;
file_pointer = fopen(argv[2], "rb");
char buffer[100];
char output[sizeof(int)][100];
int output_counter = 0;
int read_counter;
int read_elements;
while(read_elements = fread(buffer, 1, 100, file_pointer) > 0)
{
read_counter = 0;
while(read_counter < 100)
{
printf("xor'ing %d and %d\n", key, buffer[read_counter]);
output[output_counter][read_counter] = buffer[read_counter] ^ key;
read_counter = read_counter + 1;
}
output_counter = output_counter + 1;
}
fclose(file_pointer);
file_1.txt
读作:"test file for the project\n"。我用了 gcc
encrypt.c
然后:
./a.out 111 file_1.txt file_2.txt
然后: ./a.out111file_2.txtfile_3.txt
cat file_3.txt reads:
项目的测试文件:
v▒▒▒s▒▒@////////▒
在 file_1.txt
和 file_2.txt
程序的第一个 运行 期间,嵌套 while 循环中打印语句:
xor'ing 111 and 116
xor'ing 111 and 101
xor'ing 111 and 115
xor'ing 111 and 116
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 105
xor'ing 111 and 108
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 111
xor'ing 111 and 114
xor'ing 111 and 32
xor'ing 111 and 116
xor'ing 111 and 104
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 112
xor'ing 111 and 114
xor'ing 111 and 111
xor'ing 111 and 106
xor'ing 111 and 101
xor'ing 111 and 99
xor'ing 111 and 116
xor'ing 111 and 10
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 118
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -88
xor'ing 111 and -31
xor'ing 111 and -94
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -57
xor'ing 111 and 115
xor'ing 111 and -33
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 1
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -19
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -96
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
这些 random
元素来自哪里?
在使用 fread() 之前将缓冲区 char 数组的所有元素初始化为 0 摆脱垃圾。