我有一个用 c 编写的模拟程序,我需要创建随机数并将它们写入 txt 文件。程序只停止 - 当再次生成已经生成的随机数时或 - 生成10亿个随机数(不重复)
我的问题是我无法在txt文件中搜索生成的long int随机数! 文本文件格式为: 9875 764 19827 2332 ... 任何帮助表示赞赏.. `
FILE * out;
int checkNumber(long int num){
char line[512];
long int number;
int result=0;
if((out = fopen("out.txt","r"))==NULL){
result= 1;
}
char buf[10];
itoa(num, buf, 10);
while(fgets(line, 512, out) != NULL)
{
if((strstr(line,buf)) != NULL){
result = 0;
}
}
if(out) {
fclose(out);
}
return result;
}
int main(){
int seed;
long int nRNs=0;
long int numberGenerated;
out = fopen ("out.txt","w");
nRNs=0;
seed = 12345;
srand (seed);
fprintf(out,"%d\n",numberGenerated);
while( nRNs != 1000000000 )
{
numberGenerated = rand();
nRNs++;
if(checkNumber(numberGenerated)==0){
fclose(out); break; system("pause");
}
else{
fprintf(out,"%d\n",numberGenerated);
}
}
fclose(out);
}`
最佳答案
如果文本文件只包含由空格分隔的随机生成的数字,那么您需要 strtok()
函数(谷歌其用法)并将其放入 @jacekmigacz 提到的二叉树结构中。但在任何情况下,您都至少必须搜索整个文件一次。然后 ftell()
值来获取您在文件中搜索的位置。当生成另一个号码时,您可以使用 fseek()
获取最新号码。记得用fgets()
注意内存需求并明智地使用malloc()
关于c - 从c中的文本文件中搜索整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603038/