?
Ist jetzt blöd, dass du deinen Beitrag komplett geändert hast, denn so habe ich ihn nicht früher gesehen.
Du möchtest folgendes?:
#include <stdio.h>
char *vergleich(char *str1, char *str2) {
if (strcmp(str1,str2) == 0)
return "Sehr gut.";
else {
return "Nope";
}
}
int main(void)
{
char ergebnis[100];
char *result;
puts(vergleich(text1, text2)); //ok
result = vergleich(text1, text2) // ok
puts(result);
ergebnis= vergleich(text1, text2) // geht nicht
strcpy(ergebnis, vergleich(text1, text2)); // ok
puts(ergebnis);
return 0;
}
Das geht, da die Stringliterale global verfügbar sind.
folgendes ist falsch:
char *vergleich(char *str1, char *str2) {
char ok[] = "Sehr gut.";
char ko[] = "Nope";
if (strcmp(str1,str2) == 0)
return ok; // geht nicht, da das Array ok nach dem return nicht mehr existiert.
else {
return ko; // geht nicht, da das Array ko nach dem return nicht mehr existiert.
}
}
Es mag sein, dass es funktioniert. Troztdem ist es falsch.