Hej! Piszę program, który przyjmuje 2 ciągi bitów w postaci łancuchow znakowych i musi je wyrownywac do tej samej dlugosci uzupelniajac odpowiednio zerami. Gdy 1 liczba jest dluzsza od drugiej wszystko działa ok, ale gdy 2 łancuch jest dluzszy, pierwszy zmienia się w porządku natomiast drugi całkowicie znika, podejrzewam, że jest to problem z funkcją memcpy, czy używam jej w zly sposob? Gdzies widzialam przyklad, w którym wydaje mi sie była podobnie użyta i mam już mętlik w głowie. Prosze o pomoc!
Oto kod:
int main(int argc, char *argv[])
{
int i=0;
int a = strlen(argv[1]);
int b = strlen(argv[2]);
if (a>b)
{
int c = a - b;
char temp[c + 1];
while (i < c)
{
temp[i] = '0';
i++;
}
temp[c] = '\0';
char help[b+1+c];
help[b + c] = '\0';
strcpy(help, temp);
strcat(help, argv[2]);
memcpy(argv[2], help, (b + c + 1));
}
if (b > a)
{
i = 0;
int c = b-a;
char temp[c + 1];
while (i < c)
{
temp[i] = '0';
i++;
}
temp[c] = '\0';
char help[a + 1 + c];
help[a + c] = '\0';
strcpy(help, temp);
strcat(help, argv[1]);
memcpy(argv[1], help, (a + c + 1));
}
printf("lancuch nr 1. : %s\nlancuch nr 2. : %s", argv[1], argv[2]);
return 0;
}