c - 从c中的文本文件中搜索整数

标签 c search full-text-search type-conversion readfile

我有一个用 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/

相关文章:

c - 为什么变量在 block 结束后会丢失其值?

c - 为什么在 main 中打印 'x' 的值,而它可能在从 abc() 出来时已被释放?

Elasticsearch索引分片解释

.net-core - Postgresql 和 .Net Core 2.1 中的全文搜索问题

ios - 如何将 Obj-C block 保存在 C 结构中?

c - 在右边和左边用 1 填充位表示

sharepoint - Sharepoint 2010-搜索请求无法连接到搜索服务

c# - 从 List<string> 中选择匹配的行

在二维网格上寻找发电站的算法

iphone - 如何在 Cocoa 中进行全文搜索?