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

代码-指针和数组有关问题

2012-03-19 
代码求助-指针和数组问题我的这段代码主要是实现,给任意一个整数,可以获取这个这书中任意位的值比如123456

代码求助-指针和数组问题
我的这段代码主要是实现,给任意一个整数,可以获取这个这书中任意位的值
比如1234567 调用 getNumByLen这个函数,length参数传递2,就可以获取这个数中的第4,就是4,传4,就是第5位5
这段代码现在可以运行,没问题
有一些问题要请教[color=#FF0000][/color]

C/C++ code
int getNumByLen(char *string,int length);main(){           char *string2;      char c1[6];      int i;      string2 = ltoa(765432,c1,10);      i = getNumByLen(string2,2);      printf("c0:%d\n", i);      system("pause");}int getNumByLen(char* string,int length){    [color=#FF0000]char tmpchar[2];[/color]//这个地方,我写成char *tmpchar,程序就会终止,写成数组就不会,这是真么问题    tmpchar[0] = string[length];    tmpchar[1] = '\0';    return atoi(tmpchar);    }


[解决办法]
内存申请的问题:
char tmpchar[2]; // 数组是C语言库在栈上自动申请的内存;
char *tmpchar; // tmpchar为野指针,需要为其分配内存

可改为:
char *tmpchar = (char*)malloc(2);

PS:
main实现中第二行
char c1[6]; // c1应该再大一些,避免在itoa()的时候越界,你这里已经越界了(不要忽略了‘\0’字符)
[解决办法]
char* tmpchar = new char[len];
[解决办法]
两个主要问题,
1,是c1数组小了,应该定义为7才对
2,就是楼上的指针问题,可以按照他们那么改。

热点排行