试图创建一个1024字节的随机数据文件。当我运行这个时,我得到了fread线上的分段错误错误。任何人看到我做错了什么?谢谢!fread导致段错误
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define PERMS 0666
int main() {
char buf[1024];
if (creat("test.txt", PERMS) < 0) {
fprintf(stderr, "couldn't create file\n");
exit(0);
}
char randomData[1024];
FILE* fp;
fp = (void*) open("/dev/urandom", O_RDONLY, PERMS);
fprintf(stderr, "here\n");
fread(&randomData, 1024, 1, fp);
fclose(fp);
return 0;
}
真正的问题是,为什么你将'open'的返回值赋给'void *'?那应该有一个闪烁的警告,告诉你你在做什么是不正确的。 – 2013-03-11 04:58:09
@ usr55410 - 如果你采取行动,通常是检查你在做什么的好主意。 'fp =(void *)...'这行会表明你做错了什么。 – 2013-03-11 04:58:51
谢谢。我已经尝试过无论是否有这个问题。看起来我在这篇文章中留下了错误的尝试。 – Alex 2013-03-11 05:00:19