a-zの文字列を変化させて出力したい

なんか遊びで作ってみました。
文字列aaaが入力され、変換度合い1が入力されたら、出力がbbbみたいなことをしてます。
a → 25 → z
a → 26 → a
って感じです。
zを変換させるのにどうやって、aとかbとかに戻すのかに結構悩みました。

#include <stdio.h>

int main(void)
{
  char input[255],output[255];
  char alpha[]="abcdefghijklmnlpqrstuvwxyz";
  int c,i,x;

  fprintf(stdout,"Please input convert strings.\nstrings is a-z.\n>");
  fscanf(stdin,"%s",&input);
  fprintf(stdout,"The degree of conversion\n>");
  fscanf(stdin,"%d",&c);

  for(i=0;i<255;i++){
    if(input[i]=='\0'){
      output[i]=input[i];
      break;
    }
    x=(input[i]-'a'+c%26)%26;
    output[i]=alpha[x];
  }
  fprintf(stdout,"converted strings\n=>");
  fprintf(stdout,"%s\n",output);

  return 0;

}

実行してみる。

$ ./a.out
Please input convert strings.
strings is a-z.
>a
The degree of conversion
>1
converted strings
=>b
$ ./a.out
Please input convert strings.
strings is a-z.
>abc
The degree of conversion
>25
converted strings
=>zab

なんか反応をして頂けたら嬉しいです。
宜しくお願いします。