写一个函数把整形转换为字符型,在调用的时候用到指针,输出的是乱码,为什么呢
/*编写函数实现整数到字符串的转换*/#include<stdio.h>#include<math.h>voiditos(inti,chars[10]){intj=0,k...
/*编写函数实现整数到字符串的转换*/
#include<stdio.h>
#include<math.h>
void itos(int i,char s[10])
{
int j=0,k,x=i,y;
while(i!=0)
{
i=i/10;
j++;
}
for(k=j-1;k>=0;k--)
{
y=x%10;
x/=10;
s[k]=y+'0';
}
}
void main()
{
int i,j;char s[10]={'0'};
char *p;
p=s;
printf("输入一个整数:\n");
scanf("%d",&i);
itos(i,p);
for(j=0;j<10;j++)
printf("%c",p++); 展开
#include<stdio.h>
#include<math.h>
void itos(int i,char s[10])
{
int j=0,k,x=i,y;
while(i!=0)
{
i=i/10;
j++;
}
for(k=j-1;k>=0;k--)
{
y=x%10;
x/=10;
s[k]=y+'0';
}
}
void main()
{
int i,j;char s[10]={'0'};
char *p;
p=s;
printf("输入一个整数:\n");
scanf("%d",&i);
itos(i,p);
for(j=0;j<10;j++)
printf("%c",p++); 展开
1个回答
展开全部
最后输出的应该是*p++吧,p++表示的不还是地址么?
不太了解你的程序的具体作用,整数到字符串?... 在最后 printf("%c",p++); 改成 printf("%c\n",*p++); 你就能看出来已经是字符串了,要不和前面的输入没有可以看到的区别。
还有,最后主函数别忘了大括号。
不太了解你的程序的具体作用,整数到字符串?... 在最后 printf("%c",p++); 改成 printf("%c\n",*p++); 你就能看出来已经是字符串了,要不和前面的输入没有可以看到的区别。
还有,最后主函数别忘了大括号。
追问
这次对了,谢谢,可是为什么呢?
追答
p是指针,*p是指针所指向的字符串or数组元素,而你要输出的当然是指针指向的东西,不会是输出地址值的。 而加\n只是为了让每次输出有空隙,要不黏在一块,看起来像没做过处理似的...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询