Нет ошибок или предупреждений от отладчика, но средство очистки памяти показывает «неинициализированный доступ», по одному на каждую строку вывода.
Вывод в порядке, если я не изменю размер или не закомментирую массив, к которому я даже не получил доступ (char ArrayThatINeverEvenUsed [10000]), вывод будет неожиданным. Ошибка неинициализированного доступа появляется как в правильных / ожидаемых версиях, так и в неправильных версиях.
#include <stdio.h>
int main()
{
FILE *fptr;
fptr = fopen("ID_List29.csv", "wb");
// why does this program only work if there's an UNUSED array of size ~100000 or larger
char ArrayThatINeverEvenUsed[10000]; // why does removing zeros cause different outputs?
int i , j, k , m;
int sz = 0;
char c, d, e, f;
char tStr[8];
tStr[4] = 0x7C; // pipe separator
tStr[5] = 0x7C;
tStr[6] = 0x0D;
tStr[7] = 0x0A;
for(i = 65; i < 91; i++)
{
c = i;
tStr[0] = c;
for(j = 65; j <91; j++)
{
d = j;
tStr[1] = j;
for(k = 65; k <91; k++)
{
e = k;
tStr[2] = k;
for(m = 65; m <91; m++)
{
f = m;
tStr[3] = m;
fprintf(fptr, "%s", &tStr[0]);
}
}
}
}
puts("Exiting...");
return 0;
}