一旦打开文件,我正在努力阅读一个非常简单的任务.使用perror,我看到报告的错误是"坏地址".这是什么意思,我该如何解决它?
int freqCheck(char * fileName) {
/*Allocate buffer*/
struct stat fileStat;
stat(fileName, &fileStat);
int size = fileStat.st_size + 1;
void * buf = malloc(size);
memset(buf, 0, sizeof(buf));
if(buf = NULL) {
printf("An error has occurred while allocating memory\n");
return 0;
}/*End if*/
/*Read file*/
int fd = open(fileName, O_RDONLY);
if(fd < 0) {
perror("Open error");
return 0;
}/*End if*/
ssize_t num;
while((num = read(fd, buf, size - 1)) > 0) {
printf("num = %d\n", num);
}/*End while*/
if(num < 0) {
perror("Read error");
return 0;
} else if(num == 0) {
printf("Read worked!");
}/*End else if*/
}/*End freqCheck*/
Run Code Online (Sandbox Code Playgroud)
if(buf = NULL) {
Run Code Online (Sandbox Code Playgroud)
应该
if(buf == NULL) {
Run Code Online (Sandbox Code Playgroud)
您的编译器应该警告您这个常见的错误.不要忽视它的警告信息!(如果它没有警告你,那么打开警告,stat!)
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |