rendered paste body#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void checkParameters(int, char**);
char getNextChar(char* string);
int letterBump(char* string);
void printResults(char* table);
int main (int argc, char* argv[])
{
char table[256];
char temp;
int i = 0;
checkParameters(argc, argv);
if(argc == 3)
{
for(i = 0; i < 256; i++)
{
table[i] = i;
}
if(!strcmp(argv[1], "-d"))
{
while((temp = getNextChar(argv[2])) != 0)
{
argv[2] = argv[2] + letterBump(argv[2]);
table[temp] = 0;
}
}
else
{
while((temp = getNextChar(argv[1])) != 0)
{
argv[1] = argv[1] + letterBump(argv[1]);
if(strlen(argv[2]) == 1)
{
table[temp] = argv[2][0];
}
else
{
table[temp] = getNextChar(argv[2]);
argv[2] = argv[2] + letterBump(argv[2]);
}
}
}
printResults(table);
}
return 0;
}
/* Checks to make sure there are enough parameters */
void checkParameters(int argc, char* argv[])
{
switch(argc)
{
case 1:
printf("tr: missing operand\n");
break;
case 2:
printf("tr: missing operand after '%s'\n", argv[1]);
break;
case 3:
break;
default:
printf("tr: extra operand '%s'\n", argv[3]);
break;
}
return;
}
/* Returns the first character. It will translate special characters. */
char getNextChar (char* string)
{
if(string[0] == 0)
{
return 0;
}
if(string[0] == 92)
{
switch(string[1])
{
case 92:
return 92;
break;
case 't':
return '\t';
break;
case 'n':
return '\n';
break;
default:
exit(1);
break;
}
}
return string[0];
}
/* Finds out if a special character was translated. */
int letterBump(char* string)
{
if(string[0] == 92)
{
return 2;
}
return 1;
}
/* Prints the resulting translation */
void printResults(char* table)
{
char temp;
while((temp = getc(stdin)) != EOF)
{
if(table[temp] != 0)
{
printf("%c", table[temp]);
}
}
return;
}