簡體   English   中英

C - Memory 訪問沖突(但為什么?)

[英]C - Memory Access Violation (But Why?)

我做了一個小程序,它應該讀取一個文件並打印出它的內容(是的,它正好是 14 個字節:)

# include <stdio.h>
# define FILE_SIZE 14

int main ()
{
    FILE *fp = fopen("file.txt", "r");
    char *buf[FILE_SIZE];

    fread(buf, FILE_SIZE, 1, fp);

    for (int i = 0; i < FILE_SIZE; i++) printf("%c", *buf[i]);
}

如果我運行它,則會發生Memory Access Violation
我猜這是由*buf[i]引起的,因為如果我刪除* ,一切正常。
(好吧,我得到了神秘的字符,但這沒關系,不是嗎?)

現在,我的問題是:為什么buf[i]有效,但*buf[i]無效?

哎呀buf不應該是指向字符的指針數組,而是字符數組

char buf[FILE_SIZE];

printf("%c", buf[i]);

沒有崩潰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM