If you simply want to embed a resource in your application the implementing a filesystem would be overkill and you should use @Olaf's method.
If however you want data that you can program independently of your application; then you could simply reserve the necessary number of on-chip flash pages and either program those separately via JTAG or add support for loading and programming the flash pages to your application. Or for greater flexibility, you could add a file-system that uses a reserved number of flash pages - that would also require you to add to your application a means to download and write the data.
All flash pages on the STM32F1xx are of equal size, so it does not matter whether you use low or high memory pages, but using the upper pages is simpler because the reset vector where your code starts is in the low memory. To reserve the pages (prevent the compiler placing code in them), you simply reduce the default upper address in the project's memory map options (I am assuming you are using Keil ARM-MDK/uVision since you mentioned MicroLib).
The both Keil's MicroLib or the its full featured library have support for I/O streams, but because the I/O capability of the target cannot be known in advance it requires what is known as retargetting. At it's simplest this is often implemented only for stdout/stdin streams, but you can implement file descriptors for any I/O device - however to perform file I/O you need a file-systems such as ELM FatFs or Yaffs for which you will still need to implement the low-level drivers for accessing the flash. If you use a file-system library; you do not actually have to hook in stdio via retargetting; you can access the library directly - I mentioned retargetting because you seem to have a somewhat loose grasp of how a stdio works.
The details of flash programming on the STM32F1xx are in a separate manual from the main reference, while the STM32 standard peripheral library includes low-level functions to support programming. Here you will find a serious gotcha not made clear elsewhere in ST's documentation; when you program or erase flash, it locks-out the address and data bus to the entire flash memory - since that is normally where the processor is also fetching instructions from, the entire core stalls for the duration of the operation, which can be as much as 40ms (it is worse on STM32F2xx at 800ms!); consequently writing to a flash page may mess up time critical operations.
If you want to use a filesystem on such a device; you may be better off using an SPI port to communicate with an SD card, or otherwise using off-chip non-volatile memory.