試圖創建一個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