C程序编程的问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 00:41:02
#include<stdio.h>
main()
{
char b[]="ABCD";
char *chp;
for(chp=b;*chp!='\0';chp=chp+2)
printf("%s",*chp);
}
这个程序能运行,但运行后是乱码,请问问题在哪?
谢谢

错在printf("%s",*chp); 你printf里面的字符串里的占位符是%s,那么printf要求后面给定的参数要为指针类型,你把*chp给它,*chp里面的值被当成了内存地址访问,当然输出乱码啦。而且这样的代码很可能会非法访问系统保留区段的内容,一般编译器都会报错并且停止处理。楼上的虽然发现了错在哪儿,但是你那样一改,每次都复位,就成了一个死循环了。

在第六行
chp指针已经移动到数组尾部
没有归位
可在第七行加上
chp=b;
这样就可以了