c语言程序设计。。。。。程序问题
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int *fun(int x);
void main()
{
int x;int *p ,*q;int i,j;
printf(" enter the data:");
scanf("%d",&x);
p=fun(x);
for(i=0;*(p+i)!='\0';i++);
for(j=0;j<i;j++)
printf("%d",*(q+j));
}
int *fun(int x)
{
int *ix;int i=0;
ix=(int *)malloc(sizeof(int)*100);
while(x>=10)
{
ix[i]=x&10;
i++;
x=x/10;
}
ix[i]=x;
return ix;
free(ix);
}
哪里出错了
答案:1) free放在return后,错
2)q 没有赋值
3)for(i=0;*(p+i)!='\0';i++); 这句话估计多了;或者少了什么
4)p是int * , 就不要用'\0'了
其他:你这是要把一个N位数每位数拆开放入数组吧。。
改好了。。首先几处可能是打错的你自己对照吧。
然后。。这句话for(i=0;*(p+i)!='\0';i++);并没有达到你想要的结果。嗯。i一直+到104,因为int数组没有'\0'。
我把i改成全局的,下面统计过了上面也就不用浪费一次遍历统计了。free就不需要了。return完了最后是读不到free的。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int *fun(int x);
int i=0;
void main()
{
int x;
int *p;
int j;
printf(" enter the data:");
scanf("%d",&x);
p=fun(x);
for(j=0;j<i;j++)
printf("%d",*(p+j));
}
int *fun(int x)
{
int *ix;
ix=(int *)malloc(sizeof(int)*100);
while(x>=10)
{
ix[i]=x%10;
i++;
x=x/10;
}
ix[i]=x;
return ix;
} #include"stdio.h"
#include"string.h"
#include"stdlib.h"
int *fun(int x);
void main()
{
int x;int *p ,*q;int i,j;
printf(" enter the data:");
scanf("%d",&x);
p=fun(x);
q=p;
for(i=0;*(p+i)!='\0';i++);
for(j=0;j<i;j++)
printf("%d",*(q+j));
}
int *fun(int x)
{
int *ix;int i=0;
ix=(int *)malloc(sizeof(int)*100);
while(x>=10)
{
ix[i]=x%10;
i++;
x=x/10;
}
ix[i]=x;
ix[i+1]=0;
return ix;
} 没搞懂你的程序是干啥用的。。。
不过单就语法错误我同意楼上的说法
大概你要加上一句q=p吧。。。 *q没给地址 stdlib.h用于文件你是否没写完 如果需要代码留个题目
上一个:C语言中结构体的问题
下一个:C语言问题