如何判断是否到了字符串的结尾

voice007 2007-08-17 04:18:16
#include <stdio.h>

int main(int argc, char *argv[])
{
char *str="abcdef";
while(str != NULL)
{
printf("a\n");
str++;
}

return 0;
}

结果是无限循环啊。具体怎么判断呢?程序在unix下编译的。
...全文
1193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cceczjxy 2007-08-18
  • 打赏
  • 举报
回复
NULL 的定义 (void*)0;
实际上在很多系统内是0,可以当成0来用,

str!=NULL只是判断指针是不是空,字符串结束的标志是最后一个字符为'\0',如过指针只向这个字符,只是
这个指针指向的值为0,但指针不为0

可以这样判断.
*str!=NULL
不过最好
*str!='\0'
liqiang123abc 2007-08-18
  • 打赏
  • 举报
回复
NULL 和 '\0' 是完全不同的2种定义
arronbnm 2007-08-17
  • 打赏
  • 举报
回复
str是指针,它的值是地址,char * str = "asdfsdafsd";
但是str != 'a', 而是0x1010010(举例)
xiaoyuanwang 2007-08-17
  • 打赏
  • 举报
回复
都被人说光了,我没事干了,顶一顶好了
孚若 2007-08-17
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(int argc, char *argv[])
{
char *str="abcdef";
while(*str != NULL)
{
printf("%c\n",*str);
str++;
}

return 0;
}
gfxiang 2007-08-17
  • 打赏
  • 举报
回复
str是字符指针,str肯定不为0啦,要判断str是不是指向字符串结束符,要递引用*str
liufei1108 2007-08-17
  • 打赏
  • 举报
回复
恩,应该while(*str != '\0'),字符串都是以'\0'结束的,但调用strlen()时,'\0'是不计算的!
yangqi227 2007-08-17
  • 打赏
  • 举报
回复
字符串都是以结尾'\0'
楼上正解
SpaceC 2007-08-17
  • 打赏
  • 举报
回复
while(str != NULL)
==>
while (*str != '\0')

字符串结尾都有一个‘\0’字符,所以判断当前字符是否为'\0' 来判断字符串结束,当前字符
用 *str 取得
softwarewander 2007-08-17
  • 打赏
  • 举报
回复
〉〉while(str != NULL)

应该是while(str != ‘\0’)

69,378

社区成员

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

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