F
jox schrieb:
Dein erstes Beispiel funktioniert nicht, weil der zu modifizierende String in einem konstanten Bereich (read-only) liegt. Wenn Du vorher eine Kopie machst, wie z.B.:
char string[] = "Hallo Welt";
...
char string2[100];
strncpy(string2,string,sizeof(string2)-1);
...
Dann kannst Du string2 auch gemäß Deinem 1. Beispiel modifizieren.
Ähm, nö.
#include <stdio.h>
#include <stdlib.h>
#define BUF 5
void func(char *str)
{
str[BUF] = '\0'; /*Verändert den String (schneidet ihn ab!)*/
}
int main(void)
{
char string[] = "Hallo Welt"; /*Deklarieren und initialisieren einer Zeichenkette*/
func(string);
printf("%s\n",string); /*Ausgabe von "Hallo", wenn BUF = 5*/
return EXIT_SUCCESS;
}
und raus kommt "Hallo". Du verwechselst wohl "char string[] = "Hallo Welt";" mit "char *string = "Hallo Welt";".