我试图在c
使用fwrite()
函数中制作非常简单的转储内存程序,但是发生错误......
这是我的代码,dumpCode()
函数获取起始地址,结束地址和名称。
然后在for循环中我想要转储内存并生成文件。
void dumpCode( char* start, char* end, char* subject )
{
FILE *fp;
char *i;
char fileName[100];
// make file name
sprintf( fileName, "/storage/emulated/0/test/%s-%s.txt", start,end );
fp = fopen( fileName, "wb" );
for ( i = start; i <= end ; i++ )
fwrite( start, 1,10*sizeof(unsigned long long),fp );
fclose(fp);
}
我认为这很简单,但我找不到错误。我的代码中的问题是什么?
答案 0 :(得分:1)
您可能正在尝试访问不存在的文件。为了确保你没有犯这个错误,你必须检查fopen的返回值。实际上,如果返回值为NULL,则表示您没有尝试访问有效或现有文件。
这是你应该做的:
void dumpCode( char* start, char* end, char* subject )
{
FILE *fp;
char *i;
char fileName[100];
// make file name
sprintf( fileName, "/storage/emulated/0/test/%s-%s.txt", start,end );
if ((fp = fopen( fileName, "wb" )) == NULL)
printf("Error: Could not open '%s'\n", fileName);
for ( i = start; i <= end ; i++ )
fwrite( start, 1,10*sizeof(unsigned long long),fp );
fclose(fp);
}
希望这有帮助。
答案 1 :(得分:0)
你应该在fp
之后检查NULL
是fopen
。只有当fopen ok,你可以使用fwrite
将数据写入文件。现在,你不知道错误,您可以打印errno
以查看错误发生的错误。
另外,我注意到,fopen
此文件带有wb
,这意味着如果此文件存在,请将其删除并重新创建然后写入数据。
#include<errno.h>
void dumpCode( char* start, char* end, char* subject )
{
FILE *fp;
char *i;
char fileName[100];
int count = 0;
// make file name
sprintf( fileName, "/storage/emulated/0/test/%s-%s.txt", start,end );
fp = fopen( fileName, "wb" );
if(NULL == fp){
printf("fopen error,errno is %d\n",errno);
}else{
for( i = start; i <= end ; i++ ){
if(fwrite( start, 1,10*sizeof(unsigned long long),fp ) == 0)
printf("fwrite error,errno is %d\n",errno);
}
fclose(fp);
}
}