Ну, я написал небольшую Программу, которая должна генерировать случайные значения, но никакое значение не должно быть в выходном файле дважды.В Linux он работает отлично, но в Windows он просто работает бесконечно долго на 32768-м значении.Это означает, что cmd открыт, но с этого момента ничего не происходит.
Я уже отладил его 30 раз, но с ним никогда не было проблем (это было чертовски отладочным) Я написал его новым, перекомпилированнымэто, даже измененные значения под ним работали через отладчик
Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
int intlen(int[]);
int main(int argc, char *argv[]) {
FILE *fp;
int percent = 0;
int Ergebnis = 0, length = 0, lenNow = 0;
bool proof = true;
srand(time(NULL));
fp = fopen("ranGen.txt", "w");
length = atoi(argv[1]);
int Lookup[length];
for (int x = 0; x < length; x++){
Lookup[x] = 0;
}
for (int i = 0; i < length; i++) {
do {
proof = true;
Ergebnis = rand() % (2147483646 - 1 + 1) + 1;
for (int j = 0; j < length && Lookup[j] != 0 && proof != false; j++) {
if (Ergebnis == Lookup[j]) {
proof = false;
}
}
}while(proof == false);
Lookup[lenNow] = Ergebnis;
lenNow++;
fprintf(fp,"%i ",Ergebnis);
}
return 0;
}
опубликовал все, но вывод, потому что я действительно не знаю, где проблема иЯ думаю, что вам нужно больше всего воспроизвести мою проблему.если вы скомпилировали его, запустите через cmd что-то вроде 50000, чтобы оно оказалось выше 32768.
(например: example.exe 50000)
Ожидается, что он создастфайл с именем RanGen.txt с 200000 случайных значений (200000 было моим тестовым значением)
Но на выходе было 32767 значений в текстовом документе, а затем программа просто ничего не делала.
Решение:используется rand() % 214748346;
вместо rand() % (214748346 - 1 + 1) + 1;