I've read many answers regarding this question, but I still do not get the gist of it. So what if sprintf writes to a screen, while fprintf writes to a file? How does it matter/make a difference?
Please try to explain in layman's term because I'm only a beginner.
No products are associated with this question.
Yes, both of them format data using the same formatting rules. sprintf() returns the formatted data as a string, which the user can store or further manipulate or display as appropriate. fprintf() writes the formatted data to whichever file or device (such as a serial port) it is connected to.
You may have also seen reference to fwrite(). fprintf(fid,...) is (for these purposes) the same as fwrite(fid,sprintf(...)) but fprintf() does not (theoretically) need to build the entire string before writing it out to the connected device. fprintf() could be thought of as a convenience for the combination of sprintf and fwrite, but it is a convenience that is used often enough to be worth having.
(There is a small difference between fprintf() and sprintf() if the destination is a serial port, but it is unimportant at the moment.)
sprintf has nothing to do any "screen" or file at all, it just creates a string variable in MATLAB's memory... of course you can decide to display that variable on the screen or write it to a file... you could even use fprintf for this!
"the gist of it" is that:
This is what the documentation states on the very first line:
Here is a simple example that demonstrates sprintf creating string variables:
>> X = sprintf('world%s','!'); % join two strings using sprintf >> Y = sprintf('hello %s', X); % join variable X with another string >> Y Y = hello world!
This produced a string variable, just as this does:
>> Z = 'hello world!' Z = hello world!