C 使用read函数读入文件
通用条款4.4.1 我正在使用read函数读取wave文件。但是,当它到达read函数时。死刑似乎停止并冻结。我想知道我是不是做错了什么 test-short.wave文件大小为:514K 我的目标是一次将文件读入内存缓冲区块。目前我正在测试这个 非常感谢您的建议C 使用read函数读入文件,c,C,通用条款4.4.1 我正在使用read函数读取wave文件。但是,当它到达read函数时。死刑似乎停止并冻结。我想知道我是不是做错了什么 test-short.wave文件大小为:514K 我的目标是一次将文件读入内存缓冲区块。目前我正在测试这个 非常感谢您的建议 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <fcntl.h> #include <str
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
char buff = malloc(10240);
int32_t fd = 0;
int32_t bytes_read = 0;
char *filename = "test-short.wav";
/* open wave file */
if((fd = (open(filename, O_RDWR)) == -1))
{
fprintf(stderr, "open [ %s ]\n", strerror(errno));
return 1;
}
printf("Opened file [ %s ]\n", filename);
printf("sizeof(buff) [ %d ]\n", sizeof(buff));
bytes_read = read(fd, buff, sizeof(buff));
printf("Bytes read [ %d ]\n", bytes_read);
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
内部主(空)
{
char buff=malloc(10240);
int32_t fd=0;
int32字节读取=0;
char*filename=“test short.wav”;
/*打开波形文件*/
if((fd=(open(filename,O_RDWR))=-1))
{
fprintf(stderr,“打开[%s]\n”,strerror(errno));
返回1;
}
printf(“打开的文件[%s]\n”,文件名);
printf(“sizeof(buff)[%d]\n”,sizeof(buff));
字节_read=read(fd,buff,sizeof(buff));
printf(“字节读取[%d]\n”,字节读取);
返回0;
}
==编辑更正===
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
char buff[10240] = {0};
int32_t fd = 0;
int32_t bytes_read = 0;
const char *filename = "test-short.wav";
fd = open(filename, O_RDWR);
if(fd == -1)
{
fprintf(stderr, "open [ %s ]\n", strerror(errno));
return 1;
}
printf("sizeof(buff) [ %d ]\n", sizeof(buff));
printf("strlen(buff) [ %d ]\n", strlen(buff));
bytes_read = read(fd, buff, sizeof(buff));
printf("Bytes read [ %d ]\n", bytes_read);
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
内部主(空)
{
char buff[10240]={0};
int32_t fd=0;
int32字节读取=0;
const char*filename=“test short.wav”;
fd=打开(文件名,O_RDWR);
如果(fd==-1)
{
fprintf(stderr,“打开[%s]\n”,strerror(errno));
返回1;
}
printf(“sizeof(buff)[%d]\n”,sizeof(buff));
printf(“strlen(buff)[%d]\n”,strlen(buff));
字节_read=read(fd,buff,sizeof(buff));
printf(“字节读取[%d]\n”,字节读取);
返回0;
}
=
的优先级高于=
:
if((fd = open(filename, O_RDWR)) == -1)
char
,而不是char*
sizeof(char)
(可能是1个字节),而不是10240strlen()
,这没有多大意义。在填充应该是缓冲区的内容之前,甚至更少const char*
(字符串文字)分配给char*
编译器警告不是蜂拥在这段代码周围吗?我已经做了更正。实际上,我使用下面的-Wall-Wextra-ggdbI编译代码,我希望编辑后的代码能够正常工作。也就是说,在输出中输入10240、0和10240(前提是文件更大,并且根据您的说法,文件更大)。