|
本帖最后由 rosynirvana 于 2013-6-25 03:09 编辑
我能看出来的问题有- for(p=*arr;p<*(arr+1012);p++)
复制代码 我大概知道你想用压扁数组的方法来输出,但是这里用错了
arr的类型是char *[46],换句话说+1就移动整整一行,+1012已经就大大越界了
正确的写法是- for(p=*arr;p<&arr[21][46];p++)
复制代码 另外一般建议用下标访问一个数组,用Hanson的话来说就是,无论熟不熟悉C,下标的可读性永远比数组高。
后面的转化算法我没看明白,看到了一处估计是写错了
其实如果你只是要实现读取例子中那样排布的十六进制数,转化成十进制再输出,是个很简单的过程- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- FILE *f;
- int i;
- char * filename = "d:/pet.txt";
- if((f=fopen(filename,"r"))==NULL){
- printf("can not open the file \n");
- exit(0);
- }
- while(fscanf(f, "%x", &i) == 1)
- printf("%d ", i);
- return 0;
- }
复制代码 |
|