首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个让人郁闷的程序,请高手赐教,该怎么处理

2012-02-09 
一个让人郁闷的程序,请高手赐教以下是我编写的一个小程序,让字母返回ASCII玛的数字,但是返回的时候莫名其

一个让人郁闷的程序,请高手赐教
以下是我编写的一个小程序,让字母返回ASCII玛的数字,但是返回的时候莫名其妙的多了一些字符,程序如下:
#include   <stdio.h>
main()
{       char   *p,*q,a[20]= "abc ",b[20];
        p=a;   q=b;
        for(;*p!= '\0 ';p++,q++)
        {     if(   *p> = 'a '   &&   *p < 'j ')
      *q=*p-48;
              puts(b);
        }
}
"abc "应该返回“123”但是结果是“123◆H”,如果是“abcdef”返回的就是“12345”又正确,好象是返回的位数必须够五位,不然就给后面添加了字符。我郁闷坏了,请那位高手不吝赐教

[解决办法]
char *p,*q,a[20]= "abc ",b[20];
改为!
char *p,*q,a[20]= "abc ",b[20] = { '\0 '};
[解决办法]
数组b没有初始化,里面的值不定。循环:数组a的元素不是串结束符的话,就给数组b的元素赋值。当数组a的元素是串结束符时,循环结束。puts会遇到串结束符才停止输出,但因为b数组的值不定,所以会产生一些其它字符的输出。当b数组先初始化,那么必定在循环结束后的第一个字符就是 '\0 ',所以不会有别的字符输出

热点排行