c++
Metis: Dziadku możesz mi wyjaśnić jak działa ten kod
char *strcpy(char zdanie2[],char zdanie[])
{
int i=0;
while((zdanie2[i]=zdanie[i])!='\0')
i++;
return(zdanie2);
}
9 sty 13:40
Dziadek Mróz:
Formatowanie kodu:
char *strcpy(char zdanie2[], char zdanie[])
{
int i = 0;
while ((zdanie2[i] = zdanie[i]) != '\0')
i++;
return (zdanie2);
}
zdanie2 jest zaalokowaną tablicą char, zdanie jest zaalokowaną tablicą char z jakimś tekstem
Iterujemy po zdanie[i], dlaczego? Bo mamy zdanie2[i] = zdanie[i], czyli operator =
oznaczający przypisanie. Przypisujemy pozycji zdanie2[i] pozycję z zdanie[i] a porównujemy
zdanie[i] do końca napisu zdanie.
char *zdanie = "Ala ma kota";
char *zdanie2 = (char *)malloc(32 * sizeof(strlen(zdanie)));
srcpy(zdanie2, zdanie): zdanie2 | zdanie
i = 0
zdanie2[0] = 'A', 'A' != '\0' → T, i++ "A" | "Ala ma kota\0"
i = 1
zdanie2[1] = 'l', 'l' != '\0' → T, i++ "Al" | "Ala ma kota\0"
i = 2
zdanie2[2] = 'a', 'a' != '\0' → T, i++ "Ala" | "Ala ma kota\0"
i = 3
zdanie2[3] = ' ', ' ' != '\0' → T, i++ "Ala " | "Ala_ma kota\0"
...
i = 10
zdanie2[10] = 'a', 'a' != '\0' → T, i++ "Ala ma kota" | "Ala ma kota\0"
i = 11
zdanie2[11] = '\0', '\0' != '\0' → N "Ala ma kota\0"| "Ala ma kota\0"
return (zdanie2);
9 sty 14:06
Dziadek Mróz:
zamiana
char *zdanie2 = (char *)malloc(32 * sizeof(strlen(zdanie)));
na
char *zdanie2 = (char *)malloc(sizeof(char) * strlen(zdanie));
9 sty 14:08
9 sty 14:14
Metis: Dzięki Wielkie, będę to analizował
9 sty 14:18