Vycházím z toho (spuštěno s parametry: 3 blablabla):
#include <stdio.h>
#include <string.h>
#define MAX 4096
int main(int argc, char* argv[])
{
char input[MAX], output[MAX];
int n, cnt = 0;
char *in = input, *out = output, *end;
printf("Zadajte retazec: ");
fgets(input, MAX, stdin);
n = atoi(argv[1]);
end = in + strlen(input);
while (in <= end) {
if (in <= end - 2 * n && strncmp(in, in + n, n) == 0) {
++cnt;
in += n;
continue;
}
if (cnt) {
out += sprintf(out, "%d", cnt);
cnt = 0;
}
*out++ = *in++;
}
puts(output);
return 0;
}
Ale chci vkládat řetězec parametrem, tak udělám toto (tučné řádky změněny a opět spuštěno s parametry 3 blablabla):
#include <stdio.h>
#include <string.h>
#define MAX 4096
int main(int argc, char* argv[])
{
[b]char *input, output[MAX];[/b]
int n, cnt = 0;
char *in = input, *out = output, *end;
[b]input = argv[2];[/b]
n = atoi(argv[1]);
end = in + strlen(input);
while (in <= end) {
if (in <= end - 2 * n && strncmp(in, in + n, n) == 0) {
++cnt;
in += n;
continue;
}
if (cnt) {
out += sprintf(out, "%d", cnt);
cnt = 0;
}
*out++ = *in++;
}
puts(output);
return 0;
}
a na vástupu mi vyjde "h (" místo "2bla"