Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Pomoc s programem v C

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"

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny