I want to send 100 ERC tokens from address A to address B but in address A there is no eth to pay fees, I want address C to pay for this transaction, how to do, please help, thanks
It's possible, but you'll have to implement a custom ERC-20 token for it. And it's not going to be easy.
You could have your users (A) sign messages offline, in which they state that they want to send a certain amount to B. The message should also contain a nonce, so that it can only be used once.
C could then send a transaction to the token contract containing this signed message. The token contract would then check the signed message and, if it was signed by A, transfer the given amount of tokens to B.
Gas for a transaction must always be paid for by the account sending the transaction.
You'll need to transfer enough ether to address A to cover the gas cost.
There is no way to do this completely without Address A unless the Token Contract specifically added a function which would allow this. (And I highly doubt that since it would be a bad vulneratbility).
There is a function which allows Address A to allocate an amount of tokens which Address B can take from them, but that too requires a transaction from address A to initiate.