- 论坛徽章:
- 0
|
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#define CONFFILES_NAME "test.tar"
int dev_getconfigfile(char *buf, int length, int *pflen)
{
int readCnt = 0;
FILE *fp;
int fd;
struct stat theStat;
char filename[128];
strcpy(filename, CONFFILES_NAME);
fp = fopen(filename, "r");
if (fp == NULL) {
printf("file open fail!\n");
return -1;
}
fd = fileno(fp);
fstat(fd, &theStat);
if (theStat.st_size > length) {
printf("file is too big!\n");
fclose(fp);
return -1;
}
readCnt = fread(buf, 1, theStat.st_size, fp);
if (readCnt < theStat.st_size ){
printf("lose some.%d %d\n", readCnt,(int)theStat.st_size);
fclose(fp);
return -1;
}
fclose(fp);
*pflen = theStat.st_size;
return 0;
}
int main()
{
char buf[102400];
int pflen;
int rs = dev_getconfigfile(buf, 102400, &pflen);
printf("rs = %d\n", rs);
printf("pflen = %d\n", pflen);
int i;
for (i = 0; i < pflen; i++) {
printf("%c", buf[i]);
}
}
|
我用你的函数,测试了下,在我的机器上是可以正常读取出来的
不过不推荐这样使用,你直接读取文件,判断是否到文件尾不是很好吗 |
|