Δημοσιεύτηκε: 27 Αύγ 2011, 15:05
από migf1
Χεχε, thanks ρε συ, αλλά είναι πολύ απλό για να αξίζει... υποκλίσεις :)

Ορίστε και μια πολύ πρόχειρη υλοποίηση του ROT13 ciphering (δουλεύει μονάχα για λατινικά γράμματα):

Κώδικας: Επιλογή όλων

#include <stdio.h>

#define ALPHA "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
#define ALPHA13 "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
// ----------------------------------------------------------------------------------------
char c_rot13( const char c, const char *alpha, const char *alpha13 )
{
register int i;

for ( i=0; alpha[i]; i++ )
if ( c == alpha[i] )
return alpha13[i];

return '\0';
}

// ----------------------------------------------------------------------------------------
char *s_rot13( char *s )
{
if ( !s )
return NULL;

char c, *cp = s;
for(; *s; s++ )
*s = (c=c_rot13(*s, ALPHA, ALPHA13)) != '\0' ? c : *s;

return cp;
}
// ----------------------------------------------------------------------------------------
int main( void )
{
char s[] = "This is a test for (dummy) ROT13 ciphering.";

printf("Original:\n%s\n\n", s);
printf("Ciphered:\n%s\n\n", s_rot13( s ) );
printf("DeCiphered:\n%s\n\n", s_rot13( s ) );

return 0;
}