永发信息网

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

答案:2  悬赏:70  手机版
解决时间 2021-03-07 06:14
#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;
}
}
请各位大虾解释下,小弟无比感谢!
最佳答案
pbuffer是指向数组中当前读入的最后一个元素位置
buffer则指向数组中第一个元素的位置
pbuffer-buffer 则得到两个地址之间的差,该差表示两个指针所指位置之间字节的个数
因此,pbuffer-buffer < BUFFER_LEN-1即是说,当前已读入的字节数未达到BUFFER_LEN,则继续读
全部回答
pbuffer是指向缓冲区的指针 buffer是指向缓冲区首地址的指针 一直在移动pbuffer指针, pbuffer-buffer < BUFFER_LEN-1成立时,也就继续移动指针,直到结束 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
虚拟村庄4生命之树怎么增加人口上限
晶体二级管的特性和符号?
紫檀木的手链重不重
镇平县人民法院晁陂人民法庭地址在什么地方,
子曰:“为政以德,譬如北辰居其所而众星共之
秋季种草能活吗?'我是今年春天蒲的草坪,
2008年是宏观调控年。从各方面数据看,宏观调
场发射扫描电镜为什么要常年开机?
胆大妄为善心悦目融为一体是描写神态的词语吗
黄体生成素低吃什么好
24h膳食回顾法中的24h一般是指从最后一餐吃东
利鑫利高端汽车定制中心在什么地方啊,我要过
逛街心情都不好,因为喜欢的衣服买不起,喜欢
甲车从A地到B地需要8小时,乙车丛B地到A地要6
菲律宾木头,红色的,比重0'8以上,有香
推荐资讯
作文:lf l was a bird
求对欠钱不还的人最好办法?急!!!谢谢了
一立方米除以0.0014628等于多少
1919年春,胡老太爷从绍兴到上海探亲。此时,
二点三乘十二的竖式计算怎么做
为什么我晚上去坟场,朋友都想下去,而我却一
美团可以用微信零钱付款吗,没有绑银行卡的..
梦见破门被风吹
世界上的地位排名,c919大飞机什么时候首飞
贪婪洞窟2什么套装好 贪婪洞窟2什么套
去马德里自治大学读本科或者研究生,对西班牙
技术分析要解决的问题是应该何时买卖证券,股
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?