fopen seg。故障。文件名:10000000大小:47M

时间:2012-01-05 19:47:26

标签: c segmentation-fault fopen

首先感谢你阅读这个问题。

我有一个奇怪的seg。尝试打开文件时出错,代码很简单:

f = fopen(itoa(SZ,10),"r");

SZ是我在编译时设置的变量,用于选择我正在打开的文件(是一个优化算法的程序,我正在尝试不同大小的问题)。使用gdb进行调试表明itoa似乎正常工作。

我对其他文件(ls输出)没有问题:

489  Jan  4 19:34 100
4.8K Jan  4 19:34 1000
48K  Jan  4 19:34 10000
478K Jan  4 19:34 100000
4.7M Jan  4 19:34 1000000
47M  Jan  4 19:34 10000000

任何想法?

感谢

P.D:itoa代码:

char *itoa(int val, int base) {

    static char buf[32] = {0};
    int i = 30;
    for(; val && i ; --i, val /= base)
        buf[i] = "0123456789abcdef"[val % base];
    return &buf[i+1];
}

1 个答案:

答案 0 :(得分:0)

由于您评论说fopen("10000000","r");也失败了,我会说出fopen()失败并返回NULL FILE*。当您随后使用该文件指针时,会出现seg错误。

fopen()可能会因为权限问题而失败 - 我不知道。

检查fopen()是否成功,以及转储失败errno