更新struct数组值后,值保持不变

我有一个包含2^32键/值对的文件;

 32410806935257552 7355088504912337885 32422108164434515 8864339902215816897 32476145725020530 3183682744179377405 32554129507725755 7487866067392975840 32556703862039701 6580190515895793022 32576110112978588 468697310917255961 32589559935917707 757063057981860288 32724197203660231 4397507527199428746 32740607750878547 497049298362389181 32804063187658851 690408619066859126 .... 

我需要读取该文件,并在每次需要时获取1000 lines

我正在使用下面的function;

 void setChunk(pair* pairs, int setNumber, FILE *file){ int start = setNumber * 1000; int finish = start + 1000; int count = 0; int i = 0; char line [c]; char *search = " "; printf("chunk is set between %d and %d\n", start, finish); if ( file != NULL ){ while (fgets(line, sizeof line, file) != NULL) /* read a line */ { if (count >= start && count < finish) { pairs[i].key = strdup(strtok(line, search)); pairs[i].value = strdup(strtok(NULL, search)); i++; } count++; } } } 

我正在使用first 1000 thousands key/value对并写入struct array (pairs)没有问题。 然后我尝试获得下一个数千对但是,键/值结构数组保持不变。 我无法更新其内容。 这可能是什么原因?

注意: setNumber定义我将采用哪一千对。 如果它是0 ,我得到的线在0-1000之间,如果它是18 ,我得到的线18000-19000

我在这样的循环中调用setChunk函数;

 for(j=0; j<=fileNumber; j++){ if ( file[j] != NULL ) { printf("%d. chunks is started to fill\n", j); pairs[j] = malloc(1000 * sizeof(pair)); setChunk(pairs[j],setnumber[j],file[j]); setnumber[j]+=1; } } 

关于这些线:

 setChunk(pairs[j],setnumber[j],file[j]); setnumber[j]+=1;` 

setnumber是一个数组,

(假设它被初始化为全0。)

因此,第一次调用时会传入entry setnumber [0]。 然后setnumber [0]增加到1

在下一次调用时,setnumber [1]在调用时传递,然后setnumber [1]增加到1。

IE每次调用时第二个参数始终为0。