half working translate

This commit is contained in:
Christoph J. Scherr 2024-05-16 13:45:36 +02:00
parent add1185efc
commit 9d148639a7
1 changed files with 46 additions and 15 deletions

View File

@ -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 <string.h>
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 <stdio.h> #include <stdio.h>
int main(int argc, char *argv[]) int main(int argc, char *argv[]) {
{ char *translator[2];
char* translator[2]; if (argc != 3) {
if (argc != 3) { printf("not enough arguments");
printf("not enough arguments"); return 1;
return 1; }
} translator[0] = argv[1];
translator[0] = argv[1]; translator[1] = argv[2];
translator[1] = argv[2]; printf("translator0: %s\n", translator[0]);
printf("translator0: %s\n", translator[0]); printf("translator1: %s\n", translator[1]);
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;
} }