Naruszenie ochrony pamięci podczas uruchamiania programu

0

Prosiłbym o pomoc przy wyjaśnieniu skąd się bierze ten problem w kodzie:

int main()
{
	char *znak;
	int i;
    for( i = 0; i < 20; i++ )
    {
        char los;
        los =(( rand() %( 'z' + 1 - 'a' ) ) + 'a' );
        znak = znak + ' ' + los;
    }
	printf("%s", znak);
	return 0;
} 
3

znak ma nieustaloną wartość, więc manipulujesz po losowym fragmencie pamięci.
Na dodatek w C tak sie nie łączy napisów! Trzeba użyć strcat.

2

Jak wyżej, do tego proponuję sięgnięcie do dowolnego kursu C, bo widać, że nie masz pojęcia o operacjach na stringach w nim.

znak = znak + ' ' + los;
0

pewnie chcesz zrobić coś takiego:

int main()
{
    char znak[0x100] = "";
    int i;
    for( i = 0; i < 20; i++ )
    {
        char los = (( rand() %( 'z' + 1 - 'a' ) ) + 'a' );
        sprintf(znak, "%s %c", znak, los);
    }
    printf("%s", znak);
    return 0;
} 
0

Dzięki za pomoc. No ja dopiero się uczę, więc pojęcia o wielu rzeczach nie mam ;)

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