I have a confusion, When we create new address/account for an ERC20 token then it have 0 Eth balance. When we send some tokens to this address and then withdraw token again from this address require a gas fee in ETH but this account don't have any ETH. So how we can send the transaction when account have 0 ETH for Gas fee. Can we use a separate address to pay ETH fee for all address of Token ? I am developing ERC20 token wallet application in C# so kindly answer accordingly.
ERC20 tokens consist of smart contracts which are built on top of the Ethereum network. This mean you must comply with the protocol specific pillars of this network, i.e. paying fees for network addition of your transactions etc.
If you can't pay the network fee, then you can't add the transaction. Now if you can't add the transaction then you can't make changes to the state of your ERC20 token smart contract. There are design patterns to work around having the sender being the payee, i.e. by using replenishing deposits, refundable gas, etc.
TLDR: Someone or something must deposit the necessary ether in some way to cover the costs associated with adding the transaction to the network.