这程序没有问题吧?是不是缓冲区太小,溢出了?
你是如何判断出 是调用fclose报错的?
sh-5.1$ cat main.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *home = malloc(sizeof(char) * 1024);
strcpy(home, getenv("HOME"));
char *abc1 = malloc(sizeof(char) * 1024);
char *abc2 = malloc(sizeof(char) * 1024);
sprintf(abc1, "%s/goal", home);
FILE *abc3 = fopen(abc1, "r+");
if(NULL == abc3) {
fprintf(stderr, "open file failed.L1\n");
// memory leaks
free(abc2);
free(abc1);
free(home);
return -1;
}
fscanf(abc3, "%s", abc2);
fprintf(stdout, "abc2==%s\n", abc2);
fclose(abc3);
free(home);
home = NULL;
free(abc1);
abc1 = NULL;
free(abc2);
abc2 = NULL;
return 0;
}
sh-5.1$ ./main
abc2==hello
sh-5.1$
|