如何利用指针判断是否到达数组的结尾?

wwss123456 2011-01-17 02:49:58
#include <stdio.h>
#include <string.h>
int main()
{
int i;
unsigned char array[6]= {0x30,0x31,0x32,0x33,0x34,0x35};
unsigned char *p;
p =array;

p = p+3;
while(这里应该填什么)
{
printf("%c\n",*p++);
}
return 0;
}


ps:意思是通过p指针来判断是否到达了指针的末尾,谢谢各位!
...全文
2692 38 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
lancerEx 2011-01-18
  • 打赏
  • 举报
回复
判断指针的下一个位置的值是不是为0
flysnowhite 2011-01-18
  • 打赏
  • 举报
回复
要么完全采用C语言中的字符数组处理,包含字符串结束标识,要么使用string库函数处理(不需要结束标识)。不要弄成四不像。
Silentgravity 2011-01-18
  • 打赏
  • 举报
回复
使用长度判断好点
赵4老师 2011-01-18
  • 打赏
  • 举报
回复
因为不是每个指针指向的数据都有事先确定的长度,所以对于判断数据结尾的工作,编译器和操作系统不管,交给程序员自理。
s_hhm 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bluesky12312388 的回复:]
C/C++ code
如果是用unsigned char 一般用作缓冲区,
你要结束位的话自己定义一个,
不过最好不要像用字符串那样使用,
都是通过长度来用,
也不会用什么strcpy,strlen
都是直接memcpy等。
[/Quote]
三楼的可以吧,当*p自加到最后时,它不就指向了空字符了,('/0')不就退出循环了。
qq120848369 2011-01-18
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

int main()
{
unsigned char array[6] = {0x30,0x31,0x32,0x33,0x34,0x35};
unsigned char *p;

p = array;
p = p+3;

while(p != array+6)
{
printf("%c\n",*p++);
}

return 0;
}




这属于C++ STL的设计策略,均以数组最后一个元素的下一个元素的地址作为结束判断.
wizard_tiger 2011-01-18
  • 打赏
  • 举报
回复
三楼和七楼的方法都可以。
或者用这个:
p-array<sizeof(array)
niuchengshi 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 william_unique 的回复:]

好像三楼的方法,不就用while(*p)就可以,你试试。。
[/Quote]

那是因为在数组的末尾自己加了'\0',一般像LZ这个的数组是不加'\0'的,用*p就出问题了。换成int类型会如何呢 ?
我是苦力 2011-01-18
  • 打赏
  • 举报
回复
数组是你写的,有没有当参数传给函数,这有这么多问题吗
for(int i = 0; i < len(数组长度); i++, p++)
{
}
TimZhuFaith 2011-01-18
  • 打赏
  • 举报
回复
*p!=EOF
mfc11 2011-01-18
  • 打赏
  • 举报
回复
直接写个*p
ForestDB 2011-01-18
  • 打赏
  • 举报
回复
while (p < array + 6)
...
zhutianjin4355255 2011-01-18
  • 打赏
  • 举报
回复
sizeof 或 “/0”
SENSSSZ 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 zhao4zhong1 的回复:]

因为不是每个指针指向的数据都有事先确定的长度,所以对于判断数据结尾的工作,编译器和操作系统不管,交给程序员自理。
[/Quote]
+1
william_unique 2011-01-17
  • 打赏
  • 举报
回复
好像三楼的方法,不就用while(*p)就可以,你试试。。
swl82560397pq 2011-01-17
  • 打赏
  • 举报
回复
int i;
char array[] = {a,b,c};

for(i=0;i<(sizeof(array))/(sizeof(char));i++)
{

}
zhangzhongke007 2011-01-17
  • 打赏
  • 举报
回复

填写 p-array<sizeof(array)
taimafanl 2011-01-17
  • 打赏
  • 举报
回复
楼主是学单片机的吧,我遇到这种情况,少的话,直接数长度,多的话利用17楼的sizeof了,ps,楼主的这种数组初始化方式系统是不会添加'\0'的,楼上的太不靠谱了。
l369294289 2011-01-17
  • 打赏
  • 举报
回复
*p!='\0'
sparrow081 2011-01-17
  • 打赏
  • 举报
回复

while (p - array < 6)
加载更多回复(16)

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧