Kopiowanie tablicy znakowej do drugiej tabicy znakowej | przy użyciu wskażników

0

Program nie chce wykonać pętli, Od razu przechodzi do instukcji ; i kończy program

#include <stdio.h>

void zkopiuj_mnie(char* s, char* m)
{

    while (*s++ != '\0')
        ;
    while (( *s++ = *m++ ) != '\0')
        ;
}

int main(void)
{

    char s[7] = { '3', '5', '1', '4' };
    char m[3] = { '1', '4', '5' };

    zkopiuj_mnie(s, m);

    int i;
    for (i = 0; i < 7; ++i)
        printf("%c\t", *(s + i));

    return 0;
}

0
<@KrzaQ> cxx --precedence *s++ = *m++ != '\0'
<+cxx> (*(s++)) = ((*(m++)) != '\0')

Inaczej mówiąc, do s zapisujesz 1 lub 0 w zależności od tego czy m wskazuje na 0 czy nie. Strategicznie użyj nawiasów, albo po prostu olej to sprawdzanie i zapisz

while(*s++ = *m++);

Prościej, czytelniej, poprawniej.

Teraz jeszcze tylko musisz poprawić przechodzenie do końca stringa:

while(*s) s++;

I dodać zero na końcu doklejanego stringa:

char m[4] = { '1', '4', '5' };

I będzie działać.

0

Zrobiłem tak, powinno działać ale się nawet porgram nie włącza

void zkopiuj_mnie(char* s, char* m)
{

    while (*s)
        ++s;
    while ((*s++ = *m) != '\0')
        ++m;
}
0

Na pewno się nie włącza?

0

no dalej nie działa, jak zwiększyłem, ale jest poprawnie, chyba, 7 elementowa, 4 z 1 tablicy i 3 z drugiej czyli 7 elementów , bo
, np.:
char n[2] = { 2, 4} ? zadeklarowane 2 elementy, i 2 wpisane

0

Gdzie jest w n null kończący stringa?

0

wróć, działa, musiałem zwiększyć tablice kopiowaną , nie no teeraz to nie rozumiem, jak pisze char n[2] = { 5,6} to zero nie jest wpisyane do tablicy?

1

A w które z dwóch miejsc ma być wpisane?

0

Żyłem w błedzie, teraz rozumiem

1 użytkowników online, w tym zalogowanych: 0, gości: 1