【发布时间】:2022-10-20 16:22:46
【问题描述】:
我试图了解为什么会发生问题。我有一个文件,从中读取了几行:
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;
}
现在,我只想打印array_slave 的最后 4 个元素。无论如何,我注意到它总是打印同一行:
for(int i=0; i<10;i++){
printf("%s\n", array_slave[i]);
}
我认为这是因为在第一个周期中,i++ 操作移动了指针,所以现在它位于我不感兴趣的内存地址中。我怎样才能返回array_slave的原始位置?我想指向array_slave[0]、array_slave[1]等等……
【问题讨论】: