Pointer, calloc, string prob
-
hi und zwar hab ich folgendes prob:
ich soll ein string einlesen, der aber dynamisch gross sein soll, und diesen dann umdrehn. Ja leichter gesagt als getan ich hab scho bissl was gemacht aber funzt net: könntet ihr mir plzz helfen ^^ thx.
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{
int laenge,i,tmp;
printf("Wie lang soll ihr Wort sein: ");
fflush(stdin);
scanf("%d",&laenge);char*wort=calloc(laenge+1,sizeof(char));
char**umwort=calloc(laenge+1,sizeof(char));
printf("Geben Sie ihr Wort ein: ");
fflush(stdin);
scanf("%s",&wort);tmp = laenge-1;
for(i=0;i<laenge;i++){
**umwort[i]=*wort[tmp];
tmp--;
}printf("%s",*umwort);
system("PAUSE");
return 0;
}
-
Für 'umwort' benötigst du auch nur einen einfachen Pointer und keinen Doppelzeiger.
(btw, und fflush(stdin) ist böse)
-
ich habs au scho mit umwort[i]=wort[tmp] versucht, klappt aber au net
es kommt immer "Problem bericht senden" von windows.
was könnte ich statt fflush(stdin); verwenden?
-
Falsche Stelle - ersetz mal den Doppelzeiger ** durch einen einfachen Zeiger, dann sollte es eigentlich passen:
char*wort=calloc(laenge+1,sizeof(char)); char*umwort=calloc(laenge+1,sizeof(char)); ... for(i=0;i<laenge;i++) { umwort[i]=wort[tmp]; tmp--; }
(und schau dir mal im Debugger an, was da passiert)
-
naja mein prog schaut so aus au ohne doppelzeiger geht es net.. wtf ich weiss net worans liegt..
int main(int argc, char *argv[]) { int laenge,i,tmp; printf("Wie lang soll ihr Wort sein: "); fflush(stdin); scanf("%d",&laenge); char*wort=calloc(laenge,sizeof(char)); char*umwort=calloc(laenge,sizeof(char)); printf("Geben Sie ihr Wort ein: "); fflush(stdin); scanf("%s",&wort); tmp = laenge-1; for(i=0;i<laenge;i++) { umwort[i]=wort[tmp]; tmp--; } printf("%s",*umwort); system("PAUSE"); return 0; }
-
also mir sind n paar sachen aufgefallen:
zum einen musst du nichtscanf("%s", &wort); //sondern: scanf("%s", wort);
verwenden.
bei der ausgabe auch:printf("%s", umwort);
und zudem sollte der string dann auch nullterminiert sein, also am ende von umwort noch '\0' anhängen. dann sollte es gehen
-
jooo alles klappt besten dank =)))