gets probleme (funktion)
-
Hallo Leute ich habe ein Problem mit gets !!!
Wenn ich in einer Funktion versuche Strings über gets einzulesen dann passiert nicht
Hier ein teil des Codes:
/* Programm mit Schleife Strings Funktion usw... */ #include <stdio.h> #include <string.h> satzfunktion () { int i, laenge, anzahl=0; double prozent; char satz [100]; printf("\nBitte einen Satz eingeben:"); fflush(stdout); gets(satz); laenge=strlen(satz); for(i=0;i < laenge; i ++) { if(satz[i] == 'e') anzahl ++; } prozent=100.0/laenge * anzahl; printf("\n%.2lf%% der Zeichen sind ein 'e'.\n\n",prozent); } satz25 () { int i=0; char satz2[100]; printf("\nGeben Sie eine Satz ein:\n"); gets(satz2); while (satz2[i]) { switch(satz2[i]) { case' ': case',': case'.': case'?': case'!': break; default: printf("%c",satz2[i]); } i ++; } }
Grüsse crasy Maschindriver
-
Hi Crasy Maschindriver,
der Funktion:
char *gets( char *buffer )
muss ein Zeiger auf den String übergeben werden.
Normalerweise dürfte sich dein Code gar nicht compilieren lassen.
Daher musst du die Funktion so verwenden:... char satz [100]; ... gets(&satz); // & ist hier das wichtige ...
Sollte dann einwandfrei funktionieren.
Bye Peter.
-
Käse ...
Der Aufruf Deiner gets()-Funktion ist richtig! Arrays werden schon immer als Zeiger an Funktionen übergeben.
Ist das Dein ganzes Programm, oder fehlt vielleicht die main() Funktion???
-
Nein das geht auch nicht hier ist der der ganze code (ist ne Aufgabe)
/* Programm mit Schleife Strings Funktion usw... */ #include <stdio.h> #include <string.h> /* Veranlasst langsamme Nullen und 1 die am Bildschirm vorbei sausen muss noch überarbeitet werden*/ matrix() { int i; /*Hauptschleife die sich 10 mal wieder holt die geschachtelten Schleifen laufen allle nur einmal durch sie werden mit break abgebrochen*/ for(i=0;i < 10; i ++) { for (i = i; i <10;i ++) { sleep(1);/*wenn man sleep rausholt funktioniert nichts mehr*/ printf("0 "); break; } for (i = i; i <10;i ++) { sleep(1); printf("1 "); break; } for (i = i; i <10;i ++) { printf("0 "); break; } for (i=i;i <10;i ++) { sleep(1); printf("1"); break; } for (i=i;i< 10;i ++) { printf(" 0 "); break; } for (i = i; i <10;i ++) { sleep(1); printf("1 "); break; } for (i = i; i <10;i ++) { printf("0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 01 1 0 1 0 0 1 0 1 "); break; } for (i=i;i <10;i ++) { sleep(1); printf("1"); break; } for (i=i;i< 10;i ++) { sleep(1); printf(" 0\n"); break; } } } /* Lässt nullen und 1 mit Topspeed über den Bildschirm sausen ist auch nicht das wahre*/ schnelle_matrix() { int i; for(i=0;i <800; i++) { printf("0101010101010101010101010010101010101010101010101010101010110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 01010011010101001010110101010101010101010101010010101010110010101010101010100101\n"); } } satzfunktion () { int i, laenge, anzahl=0; double prozent; char satz [100]; printf("\nBitte einen Satz eingeben:"); gets(satz); laenge=strlen(satz); for(i=0;i < laenge; i ++) { if(satz[i] == 'e') anzahl ++; } prozent=100.0/laenge * anzahl; printf("\n%.2lf%% der Zeichen sind ein 'e'.\n\n",prozent); } satz25 () { int i=0; char satz[100]; printf("\nGeben Sie eine Satz ein:\n"); gets(satz); while (satz[i]) { switch(satz[i]) { case' ': case',': case'.': case'?': case'!': break; default: printf("%c",satz[i]); } i ++; } } geheime_funktion() { char geheim[7], passwort[80]; int versuch= 3; geheim[0]=109; geheim[1]=97; geheim[2]=114; geheim[3]=105; geheim[4]=111; geheim[5]=110; geheim[6]='\0'; do { printf("Login eingeben : "); gets(passwort); if(strcmp(geheim,passwort) == 0) { printf(" Login OK\n\a"); break; } else printf("\nFalsch du doof\n"); versuch --; } while (versuch < 0); } main () { int i, wahl; float betrag; char geheim[7], passwort [80]; geheim[0]=109; geheim[1]=97; geheim[2]=114; geheim[3]=105; geheim[4]=111; geheim[5]=110; geheim[6]='\0'; printf("\nLogin eingeben : "); gets(passwort); if(strcmp(geheim,passwort) == 0) { printf("\n\t Login OK\n\a"); } else { printf("\n\t Sie haben keine Zugriff Rechte\n\n\n"); exit(0); } while (wahl != 0) { printf("\n________________________________________________________________________________"); printf("\n\n"); printf("\t_______________________________________________\n"); printf("\t| Programm mit verschiedenen Funktionen |\n"); printf("\t|_____________________________________________|\n"); printf("\n\n Prozentanzahl der Satzzeichen 1 Die Matrix 8\n"); printf("\n Satz Ausgabe ohne Leerzeichen 3 Ende 0\n"); printf("\n Rechner von Euro in Dm 12\n\n"); printf(" EINGABE: "); scanf("%i",&wahl); switch(wahl) { case 1:satzfunktion(); break; case 5:matrix(); break; case 8:schnelle_matrix(); break; case 3:satz25(); break; case 12: printf("Betrag eingeben: "); scanf("%f",&betrag); printf("\n%.2f Euro sind %.2f D\nM",betrag,betrag * 1.95583); break; } } }
-
@mady:
Das mit der Arrayübergabe wusste ich nicht.
Man lernt halt jeden Tag was neuesBye Peter.