首先感谢你阅读这个问题。
我有一个奇怪的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];
}
答案 0 :(得分:0)
由于您评论说fopen("10000000","r");
也失败了,我会说出fopen()
失败并返回NULL
FILE*
。当您随后使用该文件指针时,会出现seg错误。
fopen()
可能会因为权限问题而失败 - 我不知道。
检查fopen()
是否成功,以及转储失败errno
。