gpt4 book ai didi

c - 段错误 :11, 代码在 Windows 上有效,但在 Mac 上无效

转载 作者:行者123 更新时间:2023-11-30 16:34:04 24 4
gpt4 key购买 nike

此函数应打印出名为 filename 的文件中字节的文本表示形式。它在 Windows 上工作,但在 mac 上出现段错误:11,感谢您的帮助

int hexdump(FILE *streaminput, FILE *streamoutput)
{
unsigned char buffer[8];
int bytescount;
int n = 0;
streaminput=fopen(filename, "rb");//read binary file
setvbuf(streaminput,NULL,_IOFBF,1024);//Buffer size to 1024 bytes
if(streaminput==0)
{
printf("cannot open file");
return 0;
}
for (;;)//read to the end of file,end feof(stream)!=0//
{
bytescount=fread(buffer,1,8,streaminput);//fread(void *buffer,
size_t size, size_t count, FILE * stream)//
//dec2hex(n, buf);//
if (bytescount==0)
{
fprintf(streamoutput,"%07X",n);
break;
}
fprintf(streamoutput,"%07X",n);

for(int i=0;i<bytescount;i++)
{
if(((char)buffer[i] >= 32) && ((char)buffer[i] <= 126))
{
//fprintf(streamoutput," %02x%c ",buffer[i],buffer[i]);
printf(" %02X %c ",buffer[i],buffer[i]);
//printf("%c",isprint(buffer[i]),buffer[i]);//
}
else
{
printf(" %02X . ",buffer[i],buffer[i]);
}
}
printf("\n");
n = n+bytescount;
if (bytescount <8)
{
fprintf(streamoutput,"%07X",n);
break;
}


}
fclose(streaminput);
streaminput=NULL;
return 0;
}

最佳答案

我猜你的问题是路径问题,你在Windows中给出的路径就像

C:\Users\Name\b.txt

但是在linux和mac中是这样的

/home/name/b.txt

建议使用相对路径并使用文件分隔符

inline char separator()
{
#ifdef _WIN32
return '\\';
#else
return '/';
#endif
}

关于c - 段错误 :11, 代码在 Windows 上有效,但在 Mac 上无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49439016/

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