我试图理解为什么会出现问题。我有一个文件,我从中读取了几行:
char *array_slave[128];
int i = 0;
while ((read = getline(&line, &len, fp)) != -1)
{
if (strstr(line, "X") != NULL)
{
array_slave[i] = line;
printf("%s\n",array_slave[i]);
i++;
}
}
经过这个循环,我知道array_slave
包含32行:
size_t array_length(char *ptr[])
{
size_t i=0;
while(ptr[i]!=NULL){
//printf("%d\n", i);
//printf("%s\n",ptr[i]);
i++;
}
return i;
}
现在,我只想打印最后 4 个元素array_slave
。不管怎样,我注意到它总是打印同一行:
for(int i=0; i<10;i++){
printf("%s\n", array_slave[i]);
}
我认为发生这种情况是因为,在第一个周期中,i++
操作会移动指针,所以现在它位于我不感兴趣的内存地址中。我怎样才能恢复原来的位置array_slave
?我想指出array_slave[0]
, array_slave[1]
等等...