细节
latte_coffee
这个作者很懒,什么都没留下…
展开
-
C语言一些细节
1、gets()方法gets()函数是用来接受一个字符串的函数,此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。由于gets()无法知道字符串的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓存溢出的安全性问题。建议使用fgets()取代。现在用个小程序说明一下到底有什么危害。 1 #include <stdio.h> 2 int main(void原创 2015-06-18 22:06:11 · 459 阅读 · 0 评论 -
assert(0)的作用
今天在看框架例子的代码里,发现很多地方没有做什么,就只是错误检查,然后后面就会跟一个assert(0),比较奇怪这个用意,所以特意差了一下记录在这里。定义assert宏的原型定义在#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,原创 2015-07-08 15:46:09 · 15435 阅读 · 0 评论 -
uint64 和字符串相互转换
uint64转换成string snprintf函数声明int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);例如:snprintf(string,sizeof(string),"%ju",GID);string转换成uint64GID=strtoull(pszValue, NULL, 0);原创 2015-08-07 15:57:32 · 24297 阅读 · 0 评论 -
结构体成员偏移量
今天在研究计算C语言中,结构体成员的偏移量问题。发现一个宏定义就可以计算得到,在这里记录一下。#define offsetof(type, field) (long)&(((type*)0)->field)其含义是:在不生成结构体实例的情况下计算结构体成员的偏移量。 结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量 (type*)0,就是假设地址0处存放原创 2015-07-28 17:01:42 · 1088 阅读 · 0 评论 -
多维数组和指针操作
一维数组名即是一个指针常量,它代表数组第一个元素的地址,我们知道一维数组的长度,那么可以通过数组名输出一维数组的所有元素:#include <stdio.h>int main(void){ int i; int a[5] = {1, 2, 3, 4, 5}; int *p = a; for( i = 0; i < 5; i++ ) printf( "原创 2015-08-07 15:37:26 · 398 阅读 · 0 评论 -
C语言文件输入数组输出小代码
要求:从.txt文件读入数据,文件中数据有100行4列。输出要求各列输出一个数组,一列一个数组。#include<stdio.h>#include<stdlib.h>#define N 4 //4列#define L 100 //100行const char file_name[50] = "d:\\a.txt";int main(int argc, char *argv[]){原创 2015-08-10 15:30:16 · 1353 阅读 · 0 评论 -
fscanf函数
参考连接:http://blog.csdn.net/misskissc/article/details/25137335 原型:int fscanf(FILE *stream, char *format,[argument…]);返回值:整型,数值等于[argument…]的个数FILE*fp;char a[10];int b;double c;fscanf(fp,"%s%d%lf",a,原创 2015-08-10 15:35:56 · 501 阅读 · 0 评论 -
字符串操作函数的一些细节问题
最近在写一个数据库的部分数据显示工具,然后把结果以表格形式输出时需要很多的字符串操作函数和多维数组及指针的操作,对其理解更多,现在总结一下。1、strcpy 、strncpy 和 strlcpy 函数strcpy原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest原创 2015-08-07 15:20:35 · 873 阅读 · 1 评论