linux(fedora)遇坑笔记..持续更新..

wpeng 2013-09-21

fedora 18下的 虽然有19了 但...懒得升级...

记录的都是遇见的一些小问题..遇到就上来记一下 慢慢累积好了

1. yum install gcc失败

  网上有很多解决办法.我用过不行之后 在gnome界面下用图形化的软件管理工具 安装就成功了( ̄_ ̄|||)

2. man内容缺失

在进行 man 2 open 等操作提示找不到

yum install man-pages就可以了

3.库函数fread的返回

size_t fread(void* ptr,size_t size,size_t n,FILE *stream)

在man里其实说的很清楚了 返回的是 块 数 所以只有块的size为1的时候返回的是实际字节

实际使用要注意这一点(不能用返回的块数*块大小来获得实际字节 因为如果最后读入的数据不满一个块的大小 数据是存入的但是块数不会+1)

举个例子

item大小设置为2048B 如果读22B(小于块大小均可) 则返回的块数是0 

还有一个例子来说明块数和块大小:

#include <stdio.h>

#define SIZE 1024
int main(void)
{
//文件大小为2KB 正好2048字节
FILE * file=fopen("temp_","r+");
char * buf[SIZE*2];

int item_count=fread(buf,2,SIZE/2,file); //这边一共将会最多读取1024个字节 2*(1024/2)
printf("count:%d\n",item_count); //item数512 item大小为2下 返回512(一共1024字节被读出)

item_count=fread(buf,1,SIZE,file); //这边一共将会最多读取1024个字节 1*1024
printf("count:%d\n",item_count); //item数1024 item大小为1下 返回1024(一共1024字节被读出)

item_count=fread(buf,1,SIZE,file);
printf("count:%d\n",item_count); //读完了 返回0

printf("eof?%s\n",feof(file)==0?"false":"true");
fclose(file);
return 0;
}

相关推荐