zero knowledge framework for c programs - how to prove correct C program execution with private inputs I am looking for a zk framework that could be used for proving correct execution of programs written in C (or any other high level language) such as:

 I know x s.t. SHA-256(x) = y (y is public, x is prover's private input)

or in pseude code:

 void compute(_ *prover_input, _ *verifier_input, _ *output){
    *output = sha256(*prover_input) == *verifier_input;
 }

So far I found pepper project which seems pretty close but it lacks the prover's private input part/zero knowledge part.

I also want to compute more functions than sha and combine them in one proof.
pepper project does not lack private input functionality. It does support that with exo_compute method. Probably it didn't when you asked the question, but now it does. 

Check here for more details about exo_compute. Also, I have implemented in a pull-request the scenario you mentioned where a prover knows the pre-image of a hash function and he/she does not disclose it to the verifier. See here for the source code and here for more details about the PR.