1
背景:我试图打开一个文件,我修改了并为其所有内容预留了足够的内存。然而,我很努力地找到一个解决方案,在所有文件内容被读入堆内存之前结束程序。无法分配堆内存
最好的猜测:我不认为我已经在堆内存中保留了足够的字节。我把我的指针作为错误类型(目前它是char类型),这可能会对我的堆内存的保留方式产生不利影响。
FILE *fptr3;
void highgest_and_lowest_Jan123(void)
{
int c;
unsigned int i = 0;
char *file;
long int size = 0;
fptr3 = fopen("/Users/sam/Desktop/Altered_AL_Weather_Station.txt", "r+");
if (fptr3 == 0)
{
printf("There was an error creating the file.\n");
exit(0);
}
fseek(fptr3, 0, SEEK_END);
size = ftell(fptr3);
file = (char *) malloc(size * sizeof(char));
if(!file)
{
puts("Not enough memory");
exit(1);
}
fseek(fptr3, 0, SEEK_SET);
do
{
c = fgetc(fptr3);
if ((int)c == EOF)
break;
file[i] = c;
printf("%c", file[i]);
i++;
} while((int)c != EOF);
// pus memory back on the heap
free(file);
}
这里是我的电流输出是什么:
但是,这里是我的输出应该是:
当您通过程序进行调试时会发生什么?它在哪里失败? – xxbbcc
Windows还是unix? – user3386109
使用'int c;'而不是'char c;''fgetc'的返回值是一个'int'。 –