Wo ist da der Fehler??
- 
					
					
					
					
 brauche funktion die enen string umkehrt ! hab sowas zusamen gebastelt! wo ist da der fehler?? #include <stdio.h> #include <string.h> char *strrevptr(char *pstr); int main(void) { char str[10]; printf ("string angeben :"); scanf("%s",str); printf("%s",strrevptr(str)); } char *strrevptr(char *pstr) { #define ARRSIZE ((int)(sizeof pstr / sizeof pstr[0])) int i; char *hp; printf("neuer string :"); for ( i = ARRSIZE ; i > 0; i--) { pstr[i]=hp[ARRSIZE-i]; } return hp; }
 
- 
					
					
					
					
 ruecke deinen code ordentlich ein, sonst wird dir nicht geholfen. char *strrevptr(char *pstr) { int arrsize = strlen(pstr); // so geht das. makros willst du nicht verwenden. aussderdem ist sizeof pstr == 4, weil pstr ein pointer ist int i; char *hp; // warum wird hp niemals etwas zugewiesen? printf("neuer string :"); for ( i = arrsize; i > 0; i--) // der ganze loop samt koerper ist falsch { pstr[i]=hp[ARRSIZE-i]; } return hp; }
 
- 
					
					
					
					
 wenn ich es so schreibe dann gets mehr oder weniger! char *strrevptr(char *pstr) { #define ARRSIZE ((int)(sizeof pstr / sizeof pstr[0])) int i; printf("neuer string :"); for ( i = ARRSIZE ; i > -1; i--) { printf("%c",pstr[i]); } return 0; }ich muss aber die funktion verketen und wie ich es mit dem return mache weiss ich net! noch ne frage warum sizeof pstr == 4? ist das kein array?? 
 und wie gehts dan mit der schleife??
 
- 
					
					
					
					
 "mehr oder weniger"?!?! wenn es nicht geht, dann geht es *nicht*. du kriegst bestenfalls 4 zeichen angezeigt und dein programm ist einfach ein grosser fehler. sei dir dessen bewusst, sonst kann ich es gleich bleiben lassen, dir zu helfen. mach es nicht mit dem #define. machs einfach nicht. nein. pointer und arrays sind nicht das gleiche. deswegen ist sizeof(array) die laenge des arrays in bytes und sizeof(pointer) je nach prozessor 1, 2, 4 oder 8. printf hat in der strrev funktion nichts verloren. in der ganzen funktion hast du nichts auszugeben. die for-schleife solltest du aufwaerts und nicht abwaerts laufen lassen. nicht return 0, sondern return pstr, sonst ist der rueckgabewert nutzlos und dein programm ist falsch. 
 
- 
					
					
					
					
 char *strrevptr(char *pstr) 
 {
 int arrsize = strlen(pstr);
 int i;
 char *hp;
 printf("neuer string :");
 for ( i =0; i > arrzise/2; i++)
 {
 pstr+i=hp+arrsize-i
 }return hp; ist das so richtig?? erster zeichen wird am ende des hp gespeichert??? 
 kanst du mir das mit dem return hp erklären?? wie ich da nen string rein bekomme??
 
- 
					
					
					
					
 John Doh schrieb: char *strrevptr(char *pstr) 
 {
 int arrsize = strlen(pstr);
 int i;
 char *hp;
 printf("neuer string :");
 for ( i =0; i > arrzise/2; i++)
 {
 pstr+i=hp+arrsize-i
 }return hp; ist das so richtig?? Ne, Codetags fehlen. 
 
- 
					
					
					
					
 John Doh schrieb: ist das so richtig?? niemals. das compiliert noch nicht mal. probier den: void rev (char *in, char *out) { out += strlen(in); *out = 0; while (*in) *--out = *in++; }musste eventuell umbauen wegen rückgabewert und so...