Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
24.01.11, 16:28
|
#1
|
Erfahrener Newbie
Registriert seit: Jan 2010
Beiträge: 112
Bedankt: 19
|
C anfänger warum geht da snicht ? :D
PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc, char *argv[])
{
system("color 0A");
char acc[100];
char pw[100];
printf("Gebe deinen Accountname ein: ");
scanf("%s",&acc);
fflush(stdin);
printf("Gebe deinen Passwort ein: ");
scanf("%s",pw);
if(strlen(pw) == 0)
{
printf("Du hast kein Passwort eingegeben!");
}
else
{
scanf("%s",pw);
fflush(stdin);
printf("\nAccountname: %s\nPasswort: %s\n",acc,pw);
system("PAUSE");
}
return 0;
}
was mache ich falsch, wenn strlen 0 ist wird kein text ausgegeben
|
|
|
24.01.11, 17:08
|
#2
|
Erfahrener Newbie
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
|
|
|
|
24.01.11, 17:35
|
#3
|
Erfahrener Newbie
Registriert seit: Jan 2010
Beiträge: 112
Bedankt: 19
|
geht trozdem nicht
|
|
|
24.01.11, 17:47
|
#4
|
Erfahrenes Mitglied
Registriert seit: Aug 2009
Beiträge: 504
Bedankt: 63
|
Wenn ich das richtig seh, wird das Programm einfach zu schnell beendet, weshalb du den Text nicht lesen kannst.
Bei der else-Verzweigung ist noch ein system("PAUSE") drin, bei der if-Verzweigung nicht.
"else" wird doch richtig angezeigt, oder?
|
|
|
24.01.11, 18:31
|
#5
|
Erfahrener Newbie
Registriert seit: Jan 2010
Beiträge: 112
Bedankt: 19
|
ja aber es steht nur nichts da wenn die if abfrage zutrifft
|
|
|
24.01.11, 19:47
|
#6
|
Banned
Registriert seit: Jun 2010
Beiträge: 87
Bedankt: 72
|
Du Prüfst auf die Länge des Strings !!! Da du aber min ein Zeichen eingeben musst wird dein String nie null sein. Habe das mal bissl umgebaut.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main (int argc, char *argv[])
{
system ("color 0A");
char acc [100];
char pw [100];
printf ("Gebe deinen Accountname ein: ");
scanf ("%s",&acc);
fflush (stdin);
printf ("Gebe deinen Passwort ein min 3 Zeichen: ");
scanf ("%s",&pw);
if (strlen(pw) < 3)
{
printf("Dein Passwort is to short!\n");
system ("PAUSE");
return 0;
} else
{
printf ("\nAccountname: %s\nPasswort: %s\n",acc,pw);
system ("PAUSE");
}
return 0;
}
|
|
|
24.01.11, 20:34
|
#7
|
Erfahrener Newbie
Registriert seit: Jan 2010
Beiträge: 112
Bedankt: 19
|
Dein Passwort is to short xDDD was denn nun deutsch oder englisch?
naja ein problem habe ich noch wenn ich enter drücke und nix eingebe steht nicht da das es zu kurz ist.
und ich möchte das es so lange fragt bist das pw korekt war
|
|
|
24.01.11, 20:54
|
#8
|
Banned
Registriert seit: Jun 2010
Beiträge: 87
Bedankt: 72
|
Der gebrauch von Goto ist eigentlich ein NoGo !!!!
Aber so geht es eben  diesmal in Deutsches Sprache.
Zitat:
wenn ich enter drücke und nix eingebe steht nicht da das es zu kurz ist
|
Das Programm erwartet eine Eingabe von mind. einem Zeichen egal was, nur Enter drücken geht nicht.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main (int argc, char *argv[])
{
system ("color 0A");
char acc [100];
char pw [100];
printf ("Gebe deinen Accountname ein: ");
scanf ("%s",&acc);
fflush (stdin);
Point:
printf ("Gebe deinen Passwort ein min 3 Zeichen: ");
scanf ("%s",&pw);
if (strlen(pw) < 3)
{
printf("Dein Passwort ist zu kurz!\n\n");
goto Point;
} else
{
printf ("\nAccountname: %s\nPasswort: %s\n",acc,pw);
system ("PAUSE");
}
return 0;
}
|
|
|
24.01.11, 21:37
|
#9
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Zitat:
Zitat von sobi2
was mache ich falsch, wenn strlen 0 ist wird kein text ausgegeben 
|
Der Text würde bei einer Länge Null ausgegeben werden. Soweit kommt es aber nicht, weil scanf() dich erst weiterlässt, wenn tatsächlich etwas eingegeben wurde.
Vergiss das goto schnell, sondern mach lieber eine while-Schleife.
Entweder while(1) mit break.
Oder while(lng < 3) mit init auf Null davor.
Das sind natürlich nur einige Möglichkeiten.
|
|
|
24.01.11, 21:43
|
#10
|
Banned
Registriert seit: Jun 2010
Beiträge: 87
Bedankt: 72
|
Zitat:
Vergiss das goto schnell, sondern mach lieber eine while-Schleife.
Entweder while(1) mit break.
Oder while(lng < 3) mit init auf Null davor.
Das sind natürlich nur einige Möglichkeiten.
|
Stimmt .....
NEUER CODE MIT WHILE SCHLEIFE
|
|
|
24.01.11, 21:44
|
#11
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Zitat:
Zitat von helicon44
Stimmt ..... 
|
ICH darf goto natürlich verwenden ^^
EDIT: Jetzt musst du noch pw vor der while-Schleife initialisieren: pw[0]=0;
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
().
|