Welcome to Arduino Stack exchange. There are a lot of discussions and half-completed, or project-specific models available for the ESP32 simulator. My sincere advice is to go ahead and buy real hardware. By the time you take to set up the simulators (download the repo, set environment variables, connect GDB debugger or other), you would have received the ...
If you are new to microcontrollers then start with basic arduino code and components. Since the esp chips can be coded with the Arduino framework it will be an almost seemless transition from Arduino board to ESP board. Build some circuits on tinkercad.com, write some code, and simulate them. Once you have those basics down hopefully your esp board will ...
Solved, I changed the method a little.
In a loop, I read a portion of the file and write it to the opened FTP remote file, then I close both at the end of the cycle
// open FTP connection
// open local file
fileUpload = fopen("/sdcard/img.png", "r+");
// initialize file type
First: A short excourse about c-strings
In C a string is an array of characters. Such an array is defined with
10 being the size of the array. Every valid c-string needs to be terminated with the null character \0. This character is not printable, thus you don't see it normally. But the standard string functions (like printf(), strlen(), etc) ...
In addition to Majenkos answer:
A float cannot take any decimal number. It has a limited change and a limited resolution in that range you could say. So if often happens, that the flat (rounded) value is not a valid float. This is the case for 26.05. There is no valid float value, that is exactly 26.05. So the nearest valid float value is chosen. The ...
float variables don't have a number of decimal places: that's how they get their name: "floating point" - the decimal point floats around as needed.
It's only when you output the value that it's rendered with a fixed (or limited) number of decimal places. Using Serial.print() the second digit is the number of decimal points: