当前位置: 代码迷 >> C语言 >> 不明白,请高手指点!!!谢谢!!!
  详细解决方案

不明白,请高手指点!!!谢谢!!!

热度:415   发布时间:2007-12-27 22:44:08.0
不明白,请高手指点!!!谢谢!!!
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')
不知道是什么意思!!!
请各位哥哥姐姐指点一下,因为我是自学的没有老师,痛苦哦!!!
搜索更多相关的解决方案: string  printf  input  

----------------解决方案--------------------------------------------------------
只要明白字符串在内存中是如何存放的就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循环就可以了!
----------------解决方案--------------------------------------------------------
  相关解决方案