我只是尝试使用fscanf读取文件,但是当我尝试fclose()或释放char时我得到Segmentation故障*我正在写文件的内容。这是我的代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv){
FILE *fp = fopen(argv[1],"r");
if(fp == NULL){
fprintf(stderr, "ERROR: File not found.\n");
return 1;
}
char* directive = malloc(9);
while(fscanf(fp,"%s",directive) != EOF){
printf("%s\n",directive);
}
//fclose(fp); Seg fault
//free(directive); free(): invalid next size (fast)
return 0;
}
更不寻常的是,当我使用gcc版本6.1运行此代码时,我自己的计算机工作正常,但在使用gcc 4.4.7的服务器上运行它并不起作用。
编辑:这是我正在尝试阅读的文件
.byte 0000045d 00
.byte 00000457 09
.byte 00000458 09
.byte 00000141 0a
.byte 00000183 0a
.byte 000001ca 0a
.byte 0000020d 0a
.size 0800
.string "Enter new char"
.byte 00000251 0a
.byte 00000262 0a
.byte 00000263 0a
.byte 0000029d 0a
.byte 000002d3 0a
.byte 0000030c 0a
.byte 00000345 0a
.byte 00000346 0a
.byte 0000036d 0a
.byte 000003b0 0a
.byte 000003e9 0a
.byte 00000409 0a
.byte 00000442 0a
答案 0 :(得分:0)
我想我已经解决了,我意识到该指令正在填充大于8个字符的值,所以我只是将fcanf行更改为:fscanf(fp,"%s\t%x\t%x",directive,&mem_location,&value)
- Tom Coda