代码求助-指针和数组问题
我的这段代码主要是实现,给任意一个整数,可以获取这个这书中任意位的值
比如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,就是楼上的指针问题,可以按照他们那么改。