I'm regularly offering food to the homeless people I meet in the streets of my city. Experience taught me that it's not such a good idea to buy the food first and then offer it, since it'd be something that the receiver doesn't enjoy consuming / is allergic to / ...
To avoid this situation, I usually come to see them first and tell them:
Hi. I have no cash in my purse but I'd really like to offer you something to drink/eat. What can I buy that you would enjoy?
The "I have no cash" part is unavoidable in my case because I come from a country where cash is not that common anymore and so I rarely have some in my wallet and buy everything with my card. But I realized with time that this disclaiming sometimes make them more comfortable of the idea of receiving food.
The remaining part of the sentence indicates your will to please and they will be more inclined to ask for something they like. This is important because you do not want to look arrogant and if you let them the opportunity to choose what you'll offer, you'll help them the most.
You need to know that you may encounter a "picky" person sometimes. I offered to buy food to the homeless people in front of a grocery store last year, and they asked me for expensive, raw food (e.g. chopped steak, pork ribs, sausages). I was short on money and couldn't afford to buy them a reasonable quantity of meat, which is quite expensive in my country. You need to know you may find yourself in similar situations oftentimes. However, there are different things you can do to defuse them:
- When you're offering to buy food, you can give examples of what you can buy them (maybe based on what is sold around):
Is there something you would like to drink/eat? Hot coffee, orange juice, banana, cookies?
Not only it can reduce a bit the shame the receiving person could feel to ask you for food, but also could orientate their choice toward one of the foods you've mentioned.
- In the case they ask you for expensive food / food that does not meet your religious and ethical beliefs, you can be straight-forward and tell them.
I'm sorry, this is not something I can buy. Perhaps this [similar food] would please you too?
You're not obliged to disclaim the reason why you don't want/can't buy it, but there's nothing wrong to do it either. Keeping it for yourself could spare you a debate but also make you look arrogant. It depends on what is most important to you.
The last thing I want to tell you is that if you're willing to, oftentimes the nicest thing you can do to help them is not only buy them some food but discuss a bit with them. They will really enjoy to spend some time with you, ask you about your job, the reason you're in town today. There's so many people who don't even greet them and pretend they're not here, they will really appreciate the human contact and trust me, you'll also learn from it too.