詳細な仕様が分からないので、適当に動作する程度に添削してみましたが、
>find_zero(char *a, int n)
は引数からして実用上は事故を起こしやすい設計の関数と推測されます。
「何処がどの様に事故を起こしやすいのか?」という考察も含め、以下の添削結果は参考程度に、仕様に合致する様に修正すると宜しいと思います。
コード:
#include <stdio.h>
void find_zero(char*,int);
int main(void){
int i;
int ch;
char a[100];
for(i=0;i<100;i++) a[i]='\0';
for(i=0;(ch=getchar())!='\n';i++) a[i]=ch;
find_zero(a,i);
return 0;
}
void find_zero(char *a, int n){
int i;
printf("Zero in ");
for(i=0;i<n;i++) if(a[i]=='0') printf("%d ",i);
printf("\n");
}