我遇到了一個相當簡單的任務:我想在一個函數中創建一個文件,該文件將一個指向緩衝區的指針作爲其參數之一。在函數中,緩衝區應該與文件的內容一起歸檔,並且稍後將在函數外使用內容。填充緩衝區,通過地址作爲參數傳遞
但是,它不顯示readFile()
內部的正確內容,以及readFile
以外的更多垃圾。此外,我想以十六進制(%02x)顯示文件的內容,但我不知道如何。我正在努力與指針的東西。你可以幫幫我嗎?
uint8_t *buffer;
int main(int argc, char *argv[]){
uint32_t i = 0;
unsigned long fileLen;
// Read file
fileLen = readFile(argv[2], &buffer);
printf("Buffer afterward: %s\n", &buffer);
}
unsigned long readFile(char *fileName, uint8_t *buffer){
unsigned long fileLen = 0;
uint8_t i;
FILE *file;
file = fopen (fileName, "r"); /* open the file for reading */
if(file==NULL){
printf("Error reading %c.\n", fileName);
return 0;
}
fseek(file, 0, SEEK_END);
fileLen=ftell(file);
fseek(file, 0, SEEK_SET);
*buffer=malloc(fileLen+1);
if(!buffer)
{
fprintf(stderr, "Memory error!");
fclose(file);
return;
}
fread(&buffer, fileLen, 1, file);
printf("Source message (%s, %ld bytes):\n%s\n", fileName, fileLen, &buffer);
puts("\n");
fclose(file);
return fileLen;
}
這是輸出:
'Source消息(BLA,16個字節): blablablub 小號sUJZ
緩衝液之後:p`
如果bla
內容是:
blablablub
1234
如何'buffer'在'main'界定? – user694733
對不起,忘了將它加入代碼。添加它。 –