String über Tatstatur eingeben?
-
Wie erwähnt:
char name[20], vname[20], telnr[20];
und dann:
printf("Bitte Nachname eingeben: "); fgets(name,sizeof name,stdin); printf("Bitte Vorname eingeben: "); fgets(vname,sizeof vname,stdin); printf("Bitte Telefonnummer eingeben: "); fgets(telnr,sizeof telnr,stdin);
-
Dankeschön für eure Hilfe.
Mit einer Kombination aus den Lösungsvorschlägen funktioniert es nun.
-
Hallo Kittxxx,
vielleicht stellst du deine Lösung noch rein, sonst wird in absehbarer Zeit bestimmt jemand nachfragen
Lass aber (der Übersichtlichkeit halber) die nichtverwendeten Variablen weg (z.B. datei)
Viele Grüße,
MaBa
-
So hier ist meine Lösung, ich hoffe ich hab nicht vergessen unwichtiges wegzulöschen, hatte die Variablen nur schon deklariert, da ich sie später noch brauche.
Viele Grüße
Kittxxx# include <stdio.h> # include <string.h> # include <stdlib.h> # define MAX 128 char vBuf[MAX]; void Puffer_leeren(void) { int ch; while ((ch = getchar()) != '\n'); } int main(int argc, char *argv[]) { char auswahl, *a; char *name, *vname, *telnr; printf("Telefonbuch\n"); printf("1 - Neuer Telefonbucheintag\n"); printf("q - beenden\n"); puts(""); printf("Bitte einen Menuepunkt auswaehlen: "); fgets(vBuf, 2, stdin); auswahl=vBuf[0]; memset(vBuf,0,auswahl); switch (auswahl) { case '1':{ //system clear printf("Neuer Telefonbucheintrag\n"); puts("------------------------------"); printf("Bitte Nachname eingeben: "); name=malloc(sizeof(name)); fgets(name,sizeof(name),stdin); memset(name,0, sizeof(name)-1); Puffer_leeren(); printf("Bitte Vorname eingeben: "); vname=malloc(sizeof(vname)); fgets(vname,sizeof(vname),stdin); memset(vname,0, sizeof(vname)-1); Puffer_leeren(); printf("Bitte Telefonnummer eingeben: "); telnr=malloc(sizeof(telnr)); fgets(telnr,sizeof(telnr),stdin); memset(telnr,0, sizeof(telnr)-1); Puffer_leeren(); } break; case 'q':{ printf("Soll das Programm beendet werden? ja/nein: "); a=malloc(sizeof(a)); fgets(a,sizeof(a),stdin); memset(a,0,sizeof(a)-1); Puffer_leeren(); if(a ='ja') exit(-1); // if(a='nein') printf("weiter\n"); }break; default: { printf("Bitte 1, 2, 3, 4, 5, 6, 7, oder q auswaehlen\n"); } break; } return 0; } /* Ausgabe Telefonbuch 1 - Neuer Telefonbucheintag q - beenden Bitte einen Menuepunkt auswaehlen: 1 Neuer Telefonbucheintrag ------------------------------ Bitte Nachname eingeben: Muster Bitte Vorname eingeben: Max Bitte Telefonnummer eingeben: 1234 */
-
und das läuft? hoffe dir ist bewusst, dass du immer nur speicher für nen zeiger reservierst da passen gelegentlich nur 4char rein... + einrückung usw. hab ich dann nicht weitergelesen!
-
wenn deine Puffer_leeren() funktion mal auf ne '\0' trifft sag ich nur wohoo
-
icke muß kotzen
if(a ='ja')
-
no_c0der schrieb:
wenn deine Puffer_leeren() funktion mal auf ne '\0' trifft sag ich nur wohoo
sollte natürlich statt '\0' ne EOF aka (-1) sein
-
Kittxxx schrieb:
name=malloc(sizeof(name)); fgets(name,sizeof(name),stdin); memset(name,0, sizeof(name)-1);
sizeof macht für Zeiger in diesem Zusammenhang keinen Sinn und ist falsch.
-
Ja das läuft bis jetzt, ich hab leider noch nicht so viel Ahnung von C, aber versuchs eben zu lernen.
Wieso ist das sizeof falsch und wie könnte man das anders machen?
Und was ist anif(a='ja')
falsch? Ich weiß, dass die ja/nein-Abfrage noch nicht so ganz funktiniert.
-
hast das schon mal versucht selbst zu lösen? nein! was gibt sizeof zurück und wieso ist strcmp(x,y) so nicht möglich
-
Vielleicht ein Hinweis zu deinem
if(a='ja')
Du verwendest hier einen falschen Operator. "=" wird für Zuweisungen verwendet, während "==" der Vergleichsoperator ist, den du eigentlich verwenden wolltest.
Die Puffer_leeren kann sicherheitshalber noch erweitert werden:
while (((c = getchar()) != EOF) && (c != '\n'))
Die anderen Fehler wurden schon angesprochen. Lass dich nicht entmutigen! Das wird schon
Viele Grüße,
MaBa
-
MaBa schrieb:
Vielleicht ein Hinweis zu deinem
if(a='ja')
Du verwendest hier einen falschen Operator. "=" wird für Zuweisungen verwendet, während "==" der Vergleichsoperator ist, den du eigentlich verwenden wolltest.
so klappt das in ansi c aber nicht!!!
-
sizeof gibt den Speicherplatz der Variable in Byte zurück und ich kann strcmp nicht verwenden, weil die Größe ja immer gleich ist. Vielleicht bin ich grad auch komplett auf dem Holzweg.
Die ja/nein-Abfrage klappt nicht, aber da überleg ich mir grad ne andre Lösung.
Vielen Dank für die Hinweise.
-
kein plan von c? schrieb:
if(a[0]=='j'&&a[1]=='a')