gpt4 book ai didi

c - 读取文件 gcc 版本 4.4.7 但不读取 gcc 6.1 时出错

转载 作者:行者123 更新时间:2023-11-30 17:01:54 25 4
gpt4 key购买 nike

我只是尝试使用 fscanf 读取文件,但是当我尝试 fclose() 或释放我正在写入文件内容的 char* 时,出现段错误。这是我的代码:

#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

最佳答案

我想我已经解决了这个问题,我意识到该指令填充了大于 8 个字符的值,因此我只需将 fcanf 行更改为:fscanf(fp,"%s\t%x\t%x “,指令,&mem_location,&value) – Tom Coda

关于c - 读取文件 gcc 版本 4.4.7 但不读取 gcc 6.1 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com