查找指定字符串在另一字符串中的位置(strpos)
- #include "stdio.h"
- int main()
- {
- char* str = "linuxany.com";
- printf("pos1:%d\n",strpos(str,"any",1));
- printf("pos2:%d\n",strpos(str,"n",2));
- return 0;
- }
- //函数定义:取字符串位置,中文作为一个字符计算
C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
1、open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。
2、fopen的实现要调用open, 关键看你想返回什么了, FILE指针还是描述符?
3、32位环境下,编译加“-D_FILE_OFFSET_BITS=64” 要在open里加O_LARGEFILE标记
0x7FFFFFFF就是2G-1。 看一下这个逻辑, 就知道open时必须制定O_LARGEFILE.
环境说明: Windows XP, Eclipse 3.5, MinGW 5.1.4, Mysql 5.1.36, CDT 3.1
在Eclipse下用CDT和MinGW编写C访问Mysql时会出现 undefined reference to `mysql_init@4′的问题,这是因为mingw编译时找不到静态库的原因,网上的解决办法一般是用:reimp.exe及dlltool.exe重新生成libmysql.def和libmysql.a,然后用libmysql.a。具体命令是:
奇怪的是用这这个办法生成的libmysql.a为0字节,后来查看有libmysql.lib文件,试着将其改名为libmysql.a,问题得到解决,具体解决步骤如下:
1、添加Mysql头文件:
方法1:项目->属性->C/C++ Build->Tool Settings->GCC C Compiler->Directories 中添加你的头文件所在目录,包括Mysql中的include目录。
方法2:将Mysql中的include目录拷到项目下的头文件目录下或MinGW的公共include目录下,目录改名为mysql。
2、添加用于gcc编译的mysql静态库文件
复制mysql安装目录中的\lib\opt\libmysql.lib为libmysql.a。
另外查询或插入记录时乱码问题的解决:
在mysql连接成功后,发出查询之前,加入如下代码
如有问题,请发邮件到 cdkey51@linuxany.com ,大家一起探讨。
The simplest debug technique is to print out a line contains the required variables value. By printing out a line at a suspect bugs point, it helps for debug . With few magic variables, that ease us debug even more.
They are __FUNCTION__, __PRETTY_FUNCTION__, __LINE__, __FILE__ .
__FUNCTION__ will returns a string of the function name where the print line stay.
__PRETTY_FUNCTION__ will only recognized by gcc compiler, that returns function name with indication the function is from which class.
__FILE__ returns which source code filename.
__LINE__ returns the exact line of the print line.
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直 接在命令行上输出。这也导致sprintf 比printf 有用得多。
sprintf 是个变参函数,定义如下:
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。
printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。