kirill-refactor
This commit is contained in:
44
mine/lab_2/vlad/main_s.c
Normal file
44
mine/lab_2/vlad/main_s.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_LINE 4096
|
||||
|
||||
int replace_char(char *buf, int key, int *replacements_left);
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 4) {
|
||||
fprintf(stderr, "Usage: %s <in> <out> <cap>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
FILE *fin = fopen(argv[1], "r");
|
||||
if (!fin) { perror("fopen input"); return 1; }
|
||||
FILE *fout = fopen(argv[2], "w");
|
||||
if (!fout) { perror("fopen output"); fclose(fin); return 1; }
|
||||
|
||||
int cap = atoi(argv[3]);
|
||||
if (cap < 0) {
|
||||
fprintf(stderr, "invalid cap\n");
|
||||
fclose(fin);
|
||||
fclose(fout);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int total = 0;
|
||||
char line[MAX_LINE];
|
||||
|
||||
while (fgets(line, sizeof(line), fin)) {
|
||||
if (cap > 0) {
|
||||
// key is unused, but pass the first byte for symmetry
|
||||
int key = (unsigned char)line[0];
|
||||
int repl_line = replace_char(line, key, &cap);
|
||||
total += repl_line;
|
||||
}
|
||||
fputs(line, fout);
|
||||
}
|
||||
|
||||
fclose(fin);
|
||||
fclose(fout);
|
||||
printf("total_replacements: %d\n", total);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user