永发信息网

while循环中的pbuffer-buffer < BUFFER_LEN-1怎么理解,pbuffer是指针诶,它怎么减啊

答案:2  悬赏:70  手机版
解决时间 2021-03-07 06:14
  • 提问者网友:暗中人
  • 2021-03-06 14:12
#include
#include
#define BUFFER_LEN 100
#define NUM_P 100

void main()
{
char buffer[BUFFER_LEN];
char *pS[NUM_P] = { NULL };
char *pbuffer = buffer;
int i = 0;
int j = 0;

for (i = 0; i < NUM_P; i++)
{
pbuffer = buffer ;
printf("\nEnter %s message, or press Enter to end\n",
i>0? "another" : "a");


while ((pbuffer-buffer < BUFFER_LEN-1) &&
((*pbuffer++ = getchar()) != '\n'));


if((pbuffer - buffer) < 2)
break;


if((pbuffer - buffer) == BUFFER_LEN && *(pbuffer-1)!= '\n')
{
printf("String too long ?maximum %d characters allowed.",
BUFFER_LEN);
i--;
continue;
}
*(pbuffer - 1) = '\0';

pS[i] = (char*)malloc(pbuffer-buffer);
if (pS[i] == NULL)
{
printf("\nOut of memory ?ending program.");
return;
}


for(j = 0 ; (*(pS[i] + j) = buffer[j]) != '\0' ; j++);
}


printf("\nIn reverse order, the strings you entered are:\n");
while (--i >= 0 )
{
printf("\n%s", *(pS + i) );
free(*(pS + i));
*(pS + i) = NULL;
}
}
请各位大虾解释下,小弟无比感谢!
最佳答案
  • 五星知识达人网友:英雄的欲望
  • 2021-03-06 14:28
pbuffer是指向数组中当前读入的最后一个元素位置
buffer则指向数组中第一个元素的位置
pbuffer-buffer 则得到两个地址之间的差,该差表示两个指针所指位置之间字节的个数
因此,pbuffer-buffer < BUFFER_LEN-1即是说,当前已读入的字节数未达到BUFFER_LEN,则继续读
全部回答
  • 1楼网友:千杯敬自由
  • 2021-03-06 15:44
pbuffer是指向缓冲区的指针 buffer是指向缓冲区首地址的指针 一直在移动pbuffer指针, pbuffer-buffer < BUFFER_LEN-1成立时,也就继续移动指针,直到结束 再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯