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...