TypeCodes

C语言将十六进制字符串转成十进制整数

C/C++处理十六进制文件中的报文内容时,经常会遇到先读取报文头中的长度(例如"E2"、"1F"、"-eE2"等等),再读取报文体中的内容的情况。那么就需要把报文头中表示长度的十六进制字符串转换成十进制的整形数据。

转换方法有两种,一种是正向从字符串低位到高位依次转换,另一种是逆向从字符串高位到低位依次转换。原理都是利用指针变量依次指向十六进制字符串中的单个字符,然后通过ASCII码表转换成对应的整数。考虑到十进制的字符串中可能会出现正负号,即转换后可能出现负整数,所以增加了对这种情况的处理。下面是两种方法的具体代码:

- 阅读剩余部分 -

再谈“0xC0000005读取写入位置冲突”——正确使用指针访问内存

前面一篇文章中,总结了错误使用指针指向一个字符串常量,然后对该字符串常量进行写入操作导致出错:“未经处理的异常:0xC0000005: 读取/写入位置发生访问冲突”。

这篇文章继续使用指针来探索这个问题。

1 测试程序:“异常: 0xC0000005: 写入位置 0xxxxxxxxx 时发生访问冲突”

- 阅读剩余部分 -

未经处理的异常:0xC0000005:读取/写入位置冲突——从去掉字符串所有空格说起

在c/c++中,有时会遇到0xC0000005: 读取/写入位置冲突的问题。明明编译器编译通过,但是在执行的时候就出现Segmentation fault(coredump)了。

该错误是由于内存访问出错引起的,最常见于指针的错误使用和数组越界等。下面是博主之前的一个经历——去掉一个字符串前后的所有空格。

- 阅读剩余部分 -

解决C-FREE 5编译出现“ld.exe: Dwarf Error: found dwarf version '0'”的问题

1问题描述

之前自己在win7 64bit的机器上,安装了MinGW编译器,GCC版本是4.8.1,安装目录是 C:\MinGW ,同时安装了C-FREE 5这款C/C++集成开发环境到 D:\C-Free 5\ 目录。用c-free编译程序的时候总是报:C-FREE~1\mingw\bin\ld.exe: Dwarf Error: found dwarf version '0', this reader only handles version 2 and 3 information。如下图所示:

C-FREE 5编译出现“ld.exe: Dwarf Error: found dwarf version '0'”

- 阅读剩余部分 -

小心visual studio的“BUG”:变量的声明和使用

昨天一Q友找我帮忙写个C程序:其中函数fun要实现:求出2000到2500之内能被7或者17或者27整除,但是不能同时被7和17整除,也不能同时被17和27整除的整数。题目倒是不难,遂打开visual studio,默默地写出下面的程序。

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 void fun(int *a, int *n) { int i = 2000, sum = 0; for(;i<2501;i++) { if( (i%7==0 || i%17==0 || i%27==0) && (!(i%7==0 && i%17==0)) && (!(i%17==0 && i%27==0)) ) { *a++ = i; sum++; } } /* 返回符合要求元素的个数 */ *n = sum; } int main() { int a[120]; int k; fun(a,&k); /* 使指针pt指向数组a的起始地址 */ int *pt = a; for(;pt<a+120;pt++) { printf("%d\n",*pt); } printf("%d\n",k); return 0; }

然后ctrl+F5执行,结果很意外的报错了:

- 阅读剩余部分 -

Windows平台如何安装最新的MinGW GCC编译器

在Eclipse中搭建C/C++环境的话,需要一个C/C++编译器。之前文章《完美配置NetBeans IDE中的C/C++开发环境》中提到了使用Cygwin作为C/C++程序的编译器,那么这篇文章就说说在Windows平台如何安装最新的MinGW GCC编译器。

1 下载MinGW GCC编译器

MinGW官网地址是:http://www.mingw.org/,目前它已经把MinGW源码托管在了sourceforge上了,因此下载地址是:点击进入。把那个mingw-get-setup.exe下载至本地电脑上即可。

- 阅读剩余部分 -

完美配置NetBeans IDE中的C/C++开发环境

目前众多C/C++开发人员使用的开发工具都是微软VC6.0、VC08、VS之类的IDE,那么对于需要进行C/C++开发的java程序猿们是否也要安装这些大块头呢?答案是否定的,因为目前java主要的两大开源IDE——Eclipse和NetBeans都是扩展性很好的开发平台,它们能够利用开源社区贡献的插件灵活地加入PHP、C/C++等开发环境。

而相对于Eclipse,博主还是比较中意NetBeans。所以在本文中,博主用的是NetBeans7.2.1作为实例演示。在配置C/C++之前,博主也在网上查了很多资料,基本上写得比较乱,所以自己整理了一份完整的NetBeans中配置C/C++开发环境的方案。在具体的演示之前,大家需要明白的几个问题。

- 阅读剩余部分 -