windows下vc使用read函数和Linux下read函数读取文件内容的比较,请帮我分析比较下代码
VC下
#include<stdio.h>
#include<fcntl.h>
int main(){
int fd;
char *buffer;
long count;
fd = open("C:/\ss.txt",O_RDWR|O_CREAT);
count = filelength(fd);
printf("count=%ld\n",count);
buffer = malloc(100);
read(fd,buffer,100);
//buffer = malloc(count+1);//注1
//read(fd,buffer,count+1);//注2
printf("%s\n",buffer);
/*while(*buffer!=NULL){
buffer++;
count1++;
}
printf("%d\n",count1);*/ //注3
}
Linux下
#include <sys/types.h>
#include<fcntl.h>
#include <sys/stat.h>
#include<stdio.h>
#include <unistd.h>
long filesize(char *filename)
{
struct stat stmp;
if (stat(filename, &stmp) < 0)
return -1;
return stmp.st_size;
}
int main(){
int fd;
char *buffer;
long count;
count = filesize("/root/ss.txt");
printf("count=%ld\n",count);
buffer = malloc(100);
fd = open("/root/ss.txt",O_RDWR|O_CREAT);
read(fd,buffer,100);
printf("%s",buffer);
}
在VC下如果给缓冲buffer加了100字节大小,会打出很多乱码,那么如果把buffer改成加了文件长度的大小(即改为注1注2),后面任然出现乱码,注3打印出来的长度也不对啊!!