C读取文件的一行
刚刚完成的C读取文件一行数据,可以读大量数据的行。
/*
函数功能:
读取文件的一行,当开辟内存不够时return值为-1,size会给出至少需要的内存大小,
return值为1时表示此时文件结束,从buffer,size得到最后一行的数据和大小。
输入参数:
stream:文件流
size:buffer大小,开辟内存大小
输出参数:
buffer:存放一行字符
size:buffer大小,字符数目
返回值:
-1:读取发生错误
0:成功读取
1: 文件结束
备注:
2010.01.11
*/
int rtFGetLine(FILE *stream,char *buffer,int &size)
{
static unsigned long offset = 0;
bool fileend = 0;
unsigned long bufsize = 1024;
char *buf = NULL, *dest = NULL;
unsigned short inc = 1;
if(!stream || !buffer)
{
return -1;
}
while(1)
{
bufsize *= inc;
buf = (char *)malloc(sizeof(char)*bufsize);
if(NULL == buf)
{
return -1;
}
memset(buf,0x00,bufsize);
fseek(stream,offset,SEEK_SET);
fread(buf,sizeof(char),bufsize,stream);
if(ferror(stream))
{
return -1;
}
dest = strchr(buf,'\n');
if(NULL == dest)
{
if( strlen(buf) >= bufsize - 1 )//该行字符大于bufsize
{
inc++;
free(buf);
buf = NULL;
continue;
}
if(feof(stream))//文件包含结束标志
{
&nbs
相关文档:
今天比较懒惰,没做题,只是看了一点那本c陷阱与缺陷,说实话读了不多但明显能感觉出这是一本好书,感觉对我来说刚好,不是基础书,但也基本能看懂,而且能学到好多东西,但今天只看了三章,主要是下军旗了,囧,我也只能把我学到的总结下来,学了总比一点都没学要好,我也只能这样安慰自己了。 ......
表达式的副作用
运算符的优先级与结合性规定了表达式中相邻两个运算符的运算次序,但对于双目
运算的操作数,C++没有规定他们的计算次序。例如,对于表达式:
exp1 + exp2;
先计算 exp1 还是 exp2?不同的编译器有不同的做法。
在数学上,对于双目运算符,不论先计算哪一个操作数,要求最终计算结果一样。
在 C ......
C/C++中的日期和时间
摘要:
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标准时间),Calendar Time( ......
1) 什么是预编译,何时需要预编译:总是使用不经常改动的大型代码体。
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
2) char * const p;
char const * p
const char *p ......
32)
int main()
{
int x=3;
printf("%d",x);
return 1;
}
问函数既然不会被其它函数调用,为什么要返回1?
mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息
33) 要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100 ......