From 9d148639a7f8d3e93460594b0d3575d43e44be74 Mon Sep 17 00:00:00 2001 From: PlexSheep Date: Thu, 16 May 2024 13:45:36 +0200 Subject: [PATCH] half working translate --- src/translate.c | 61 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/src/translate.c b/src/translate.c index 9bf1e9a..f6361c3 100644 --- a/src/translate.c +++ b/src/translate.c @@ -1,21 +1,52 @@ /* -* Read from stdin. replace all occurences of arg 1 with arg2. -*/ + * Read from stdin. replace all occurences of arg 1 with arg2. + */ + +#include +const int BUF_SIZE = 1024; + +char translate_c(char src, char s1[], char s2[]) { + int n = strlen(s1); + + for (int i = 0; i < n; i++) { + if (src == s1[i]) { + return s2[i]; + } + } + + return src; +} + +void translate(char source[], char target[], char s1[], char s2[]) { + int n = strlen(source); + + for (int i = 0; i < n; i++) { + target[i] = translate_c(source[i], s1, s2); // FIXME: this is buggy + } + + target[n] = '\0'; +} #include -int main(int argc, char *argv[]) -{ - char* translator[2]; - if (argc != 3) { - printf("not enough arguments"); - return 1; - } - translator[0] = argv[1]; - translator[1] = argv[2]; - printf("translator0: %s\n", translator[0]); - printf("translator1: %s\n", translator[1]); +int main(int argc, char *argv[]) { + char *translator[2]; + if (argc != 3) { + printf("not enough arguments"); + return 1; + } + translator[0] = argv[1]; + translator[1] = argv[2]; + printf("translator0: %s\n", translator[0]); + printf("translator1: %s\n", translator[1]); - // TODO: translate from stdin and print to stdout + char source[BUF_SIZE]; + char target[BUF_SIZE]; - return 0; + while (scanf("%s", source) != EOF) { + translate(source, target, translator[0], translator[1]); + + printf("%s\n", target); + } + + return 0; }