不明白,请高手指点!!!谢谢!!!
main(){char st[20],*ps;
int i;
printf("input a string:\n");
ps=st;
scanf("%s",ps);
for(i=0;ps[i]!='\0';i++)
if(ps[i]=='k'){
printf("there is a 'k' in the string\n");
break;
}
if(ps[i]=='\0') printf("There is no 'k' in the string\n");
}
里面这句: for(i=0;ps[i]!='\0';i++)
还有这句: if(ps[i]=='\0')
不知道是什么意思!!!
请各位哥哥姐姐指点一下,因为我是自学的没有老师,痛苦哦!!!
----------------解决方案--------------------------------------------------------
只要明白字符串在内存中是如何存放的就OK了啊...(最后一位是'\0')
for(i=0;ps[i]!='\0';i++)从前到后遍历,
if(ps[i]=='\0') 遍历完成的标志!
这个过程中,遇k 就break
否则,继续...
[[italic] 本帖最后由 blueboy82006 于 2007-12-27 22:53 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
这个程序有点像动态数组,虽然c里面没有动态定义方法
----------------解决方案--------------------------------------------------------
在C语言中一个字符串的结束标志是'\0'
----------------解决方案--------------------------------------------------------
‘\0’是字符串结束标记,当遇到'\0'时说明字符串已经遍历结束。
----------------解决方案--------------------------------------------------------
是我的话``我回这样```
char st[20],*ps;
int i = 0 ;
printf("input a string:\n");
ps=st;
while ( i < 20-1 )
{
*(ps+i) = getchar( ) ;
}
*(ps+i) = ' \0 ' ;
毕竟越界是不好的````
----------------解决方案--------------------------------------------------------
里面这句: for(i=0;ps[i]!='\0';i++)
--------------------------------------------------------
你把它看成简单的for循环就可以了!
----------------解决方案--------------------------------------------------------