I have a server created in "eu-west-1c" availability zone and I tried to attach the volume created in "eu-west-1a" availability zone to "eu-west-1c" but the server created in "eu-west-1c" is not reachable. Is it any way to attach among different availability zones?
No there isn't. You need to create a snapshot then re-create from that snapshot in the Availability Zone you want it to run in.
From the AWS documentation.
Here's some background for you about regions and availability zones, which you appear confused in your question.
The EBS Volumes attached to the EC2 Instance will always have to remain in the same availability zone as the EC2 Instance. Possible reason to this is because of the fact that EBS Volumes are present outside of the host machine and instances have to be connected over the network, if the EBS Volumes are present outside the Availability Zone there can be potential latency issues and subsequent performance degradation.
What you can do in such scenario is, get the Snapshot of the EBS Volume (Snapshot sequentially captures the state of your EBS Volume and stores it in S3 Bucket (friendly reminder that it will cost you man) ) and post that you have two options , you can either create an EBS Volume from this snapshot in your desired Availability Zone or you can create an AMI from this snapshot in your desired Availability Zone and then go ahead and launch your EC2 instance from it.
You can choose the availability zone when you create a snapshot of any EBS volume. For example you can create a volume in "eu-west-1c" out of a snapshot present in "eu-west-1a".
But if you want to transfer it to another region you can use the AWS Management Console or the AWS CLI.
You can read more about replicating AWS EBS volumes and the impacts of this replications on in this blog post by NetApp.