inhalt von rückgabewert char* von char[] auslesen
-
hallo,
ich hab folgendes problem: ich hab eine rpc-funktion die als rückgabewert char* von einem char[] hat, wenn ich nun diese funktion aufrufen und den inhalt von dem wodrauf der zeiger zeigt haben möchte, bekomme ich immer nur das erste zeichen
hier die beiden funktionen
static char stempel[STEMPELLEN]; void Do_Login(CLIENT *clnt){ int login=0, count =0; char *string; char Nummer[KONTOLEN], PW[PWLEN]; SLogin *ins; ins=NULL; char ok; ok= 'x'; getchar (); do{ do { /*system("clear");*/ printf("\n==========Login==========\n"); printf ("Kontonummer: "); gets (Nummer); printf("Passwort: "); gets(PW); printf ("Eingaben korrekt (j/n)? "); scanf ("%c", &ok); fflush(stdin); getchar(); } while (ok != 'j'); ins= (SLogin *) malloc (sizeof (SLogin)); ins->NumEnt= (char*) malloc (KONTOLEN); ins->PWEnt= (char*) malloc (PWLEN); strcpy(ins->NumEnt,Nummer); strcpy(ins->PWEnt,PW); strcpy(stempel,rpc_login_1 (ins, clnt)); if((stempel !=NULL)){ printf("Login erfolgreich\n"); login=1; /*Ausgabe nur 'a' */ printf("Stempel: %s\n",stempel); } else{ count++; printf("Login fehlgeschlagen\n"); if(count==3) login=1; } }while (login!=1); }
[
static char stempel[STEMPELLEN]; char * rpc_login_1_svc (SLogin *argp, struct svc_req *rqstp) { STransaktion * login; SKonto *list,*hit; list= LoadKontoList (); hit=SearchKonto(list,argp->NumEnt); if((hit !=NULL) && (strcmp(hit->PWEnt,argp->PWEnt)==0)){ strcpy(stempel,"bertwuscge"); fprintf(stderr,"%s",stempel); return stempel; } return NULL; }
-
KP was das Problem ist
if (*stempel == 'a') /* erstes Zeichen vergleichen */ { printf("Waldorf und Sattler\n"); } if (strcmp(stempel, "abc") == 0) /* ganzer String vergleichen */ { printf("Schweine im Weltall\n"); }
static stempel[]; bedeutet, daß zwei verschiedene Chararrays pro Quelldatei (.c;.cpp) existieren
ansonsten viele viele printf-Anweisungen einbauen
-
... nachdem Dir nun keiner weitergeholfen hat, versuch ich es mal (und das ohne RPC-Kenntnisse
Der Fehler deutet so ein wenig auf die Problemaktik hin, dass die Daten nicht korrekt dargestellt werden. Bei RPC-Programmierung muss man auf eine kompatible externe Darstellung achten. Hast Du Dir schon mal die xdr(3) Library-Bescreibung im Linux-Manual angesehen?
-
keksekekse schrieb:
static stempel[]; bedeutet, daß zwei verschiedene Chararrays pro Quelldatei (.c;.cpp) existieren
-
Kein plan ist ein kleiner Vulnerability Progger? gets, strcpy...