Κι εγώ νόμιζα πως το είχες ήδη έτοιμο

Btw, γιατί δεν ξεκινάς με
Ceasar cipher που είναι πιο βατός στην υλοποίηση, συν ότι πάνω σε αυτόν πατάει κατόπιν ο Vigenère; Θα μπορούσες με αυτόν τον τρόπο να δεις ιδίας όμασι πως φτιάχνοντας έναν βασικό αλγόριθμο (πιθανότατα σε ξεχωριστή, re-usable συνάρτηση) μπορείς να τον χρησιμοποιήσεις ως μέρος άλλου αλγόριθμου, που να περιλαμβάνει τον πρώτο.
Επίσης θα μπορείς να ρωτάς τον χρήστη να διαλέξει έναν από τους 2 αλγόριθμους για την κρυπτογράφηση/αποκρυπτογράφηση

Παραθέτω και τον κώδικά σου ψιλο-διορθωμένο σύμφωνα με τα conventions της C...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#define SIZE (1024+1) /* 26 x 26 */
void Alphabet_table( char table[SIZE] );
void Vigenere_table( char table[SIZE] );
void Vigenere_Encryption( char plaintext[SIZE], char key[SIZE] );
/*****************************************************//**
*
*********************************************************
*/
int main( void )
{
char table[SIZE] = {'\0'};
char plaintext[SIZE] = {'\0'};
char key[SIZE] = {'\0'};
printf("Δώστε μια συμβολοσειρά : ");
fgets(plaintext, SIZE, stdin);
printf("Δώστε το κλειδί : ");
fgets(key, SIZE, stdin);
printf("H συμβολοσειρά που δόθηκε ειναι : %s " , plaintext);
printf("Το κλειδί που δόθηκε ειναι : %s " , key);
Alphabet_table( table );
Vigenere_table( table );
Vigenere_Encryption(plaintext, key);
return 0;
}
/*****************************************************//**
*
*********************************************************
*/
void Alphabet_table( char table[SIZE] )
{
/* ... Αρχικοποίηση του αρχικου πλαισίου ... */
return;
}
/*****************************************************//**
*
*********************************************************
*/
void Vigenere_table( char table[SIZE] )
{
/* ... Αρχικοποίηση του πλαισίου του Vigenere ... */
return;
}
/*****************************************************//**
*
*********************************************************
*/
void Vigenere_Encryption( char plaintext[SIZE] , char key[SIZE] )
{
/* ... Κρυπτογράφηση ... */
return;
}
Βασικά, στα #define χρησιμοποιούμε κεφαλαία γράμματα, για να είναι αμέσως αντιληπτό πως πρόκειται για preprocessor constant/macro. Επίσης, αρχικοποιώ και τα 3 strings με '\0' παντού, για να μειώσω τις πιθανότητας ενδεχόμενου boundary overflow στον κώδικα που θα τα διαχειριστεί, και άλλαξα τα σχόλια από // σε /* */ ώστε να μπορεί ο κώδικας να γίνεται compile ΚΑΙ σύμφωνα με τα πρότυπα C89/C90 της γλώσσας

Τέλος, έκανα ευδιάκριτες τις αρχές και τα τέλη των συναρτήσεων.