簡體   English   中英

C程序的運行時錯誤

[英]Run-time Error for a C program

我在互聯網上找到了這個程序所以我決定嘗試它,它將文件轉換為另一種類型的文件。 我通過終端編譯並運行我的MAC OS X 10.9.1,但它給了我一個分段錯誤11.我該怎么做才能解決這個問題?

#include <stdio.h>

#define SRAM_SIZE       (32 * 1024)

typedef FILE* pfile;

static unsigned char SRAM[SRAM_SIZE];

int main(void)
{
    pfile in, out;
    register int i;

    in = fopen("input.sra", "rb");
    for (i = 0; i < SRAM_SIZE; i++)
        SRAM[i ^ ~0&3] = fgetc(in);
    fclose(in);
    out = fopen("output.sra", "wb");
    for (i = 0; i < SRAM_SIZE; i++)
        fputc(SRAM[i], out);
    fclose(out);
    return 0;
}

您沒有錯誤檢查。 更改:

in = fopen("input.sra", "rb");
for (i = 0; i < SRAM_SIZE; i++)
    SRAM[i ^ ~0&3] = fgetc(in);
fclose(in);
...

至:

in = fopen("input.sra", "rb");
if (in == NULL)
{
    printf("Unable to open 'input.sra'.\n");
    return -1;
}
for (i = 0; i < SRAM_SIZE; i++)
    SRAM[i ^ ~0&3] = fgetc(in);
fclose(in);
...

您也應該對輸出文件執行相同的操作。 有很多方法可能會失敗,只是盲目地訪問未經測試的值是不好的做法。

暫無
暫無

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

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