-1
我有一個接口,只能打印字符串到一個文件,我在嵌入式系統上工作,所以打開一個文件不是一個選項
我在內存中創建了一個虛擬文件,使用open_memstream
,並使用該文件,並解析程序失敗串上fclose
造成分段錯誤
這裏的代碼之後:
在一個memstream上調用fclose FILE導致分段fualt
/*
* Creating a temp file in memory
*/
FILE * mem_stream;
char * mem_buf;
size_t mem_len;
mem_stream = open_memstream(mem_buf,&mem_len);
XMLDoc_print(doc, mem_stream, NULL, NULL, 0, 0 ,0);
XMLDoc_free(doc);
/*
* Reading the temp file
*/
fseek(mem_stream,0,SEEK_END);
long file_size = ftell(mem_stream);
rewind(mem_stream);
char * contents = malloc((file_size+1) * sizeof(char));
fread(contents, sizeof(char), file_size, mem_stream);
/*
* closing the file
*/
fclose(mem_stream);
contents[file_size] = 0;
printf("\n THE RESULT XML IS : %s \n" , contents);
如果我評論的fclose(mem_stream);
行程序工作正常,這是一種選擇?如果不是我該如何解決這個問題。
不應該'open_memstream()'函數的第一個參數是'char **'。 –
@SouravGhosh是的,我想知道OP – Gopi
是怎麼回事,我檢查了'open_memstream()'的char ** bufp參數,'char *'或'char **'都可以正常工作。它只是需要一個字符指針,我反正不使用它 –