读书人

请教此程序错在哪里?(小弟百思不得其

发布时间: 2012-03-21 13:33:14 作者: rapoo

请问此程序错在哪里?(小弟百思不得其解)
#include "stdio.h "
#include "stdlib.h "
int main()
{int x,y,i,count[10];
char *p;
clrscr();
scanf( "%d%d ",&x,&y);
for (;x <=y;x++)
{itoa(x,p,10);
while(*p)
{switch(*p)
{case '0 ':count[0]++;break;
case '1 ':count[1]++;break;
case '2 ':count[2]++;break;
case '3 ':count[3]++;break;
case '4 ':count[4]++;break;
case '5 ':count[5]++;break;
case '6 ':count[6]++;break;
case '7 ':count[7]++;break;
case '8 ':count[8]++;break;
case '9 ':count[9]++;break;
}
p++;
}
}
for (i=0;i <=9;i++)
printf( "%d\n ",count[i]);
getch();
return 0;
}




[解决办法]
char *p = (char*)malloc(sizeof(char)*10);
count[10];
memset(count, 10, 0);

[解决办法]
你的p是野指针,很危险的东西...
这样吧,

#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;


int main()
{int x,y,i,count[10]={0};
char *p=(char*)malloc(sizeof(char)*50);
char *savep=p;//保存指针p的状态,以便最后释放
// clrscr();
scanf( "%d%d ",&x,&y);
for (;x <=y;x++)
{itoa(x,p,10);
while(*p)
{switch(*p)
{case '0 ':count[0]++;break;
case '1 ':count[1]++;break;
case '2 ':count[2]++;break;
case '3 ':count[3]++;break;
case '4 ':count[4]++;break;
case '5 ':count[5]++;break;
case '6 ':count[6]++;break;
case '7 ':count[7]++;break;
case '8 ':count[8]++;break;
case '9 ':count[9]++;break;
}
p++;
}
}
for (i=0;i <=9;i++)
printf( "%d\n ",count[i]);
p=savep;//恢复p为申请内存时的状态
free(p);
getch();
return 0;
}


[解决办法]
1,数组要初始化
2,指针要分配内存,不然itoa之后字符存在那呢?

读书人网 >C语言

热点推荐