Modifizieren eines String - Literals

henso

Grünschnabel
Hallo. Ich habe ein Verständnisproblem was String Literale angeht.

Der folgende Code lässt sich problemlos kompilieren:
Code:
#include <stdio.h>
#include <string.h>
#include <conio.h>

#define SUB_STRING "geiler"

int main()
{
	char str1[] = "Das ist ein toller Satz";
	char *str2;

	str2 = strstr(str1, "toller");

	strncpy(str2, SUB_STRING, strlen(SUB_STRING));
	puts(str1);

	_getch();
	return 0;
}

...während sich der folgende Code nicht mehr kompilieren lässt ( man beachte Zeile 9 ):
Code:
#include <stdio.h>
#include <string.h>
#include <conio.h>

#define SUB_STRING "geiler"

int main()
{
	char *str1 = "Das ist ein toller Satz";
	char *str2;

	str2 = strstr(str1, "toller");

	strncpy(str2, SUB_STRING, strlen(SUB_STRING));
	puts(str1);

	_getch();
	return 0;
}

Kann mir einer erklären warum das modifizieren von str1 an dieser Stelle nicht möglich ist?

Gruß
 
Zurück