myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   C anfänger warum geht da snicht ? :D (https://mygully.com/showthread.php?t=2214264)

sobi2 24.01.11 16:28

C anfänger warum geht da snicht ? :D
 
PHP-Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(int argcchar *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 :(

Xalir 24.01.11 17:08

Code:

scanf("%s",&pw);

sobi2 24.01.11 17:35

geht trozdem nicht

Fire.Storm 24.01.11 17:47

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?

sobi2 24.01.11 18:31

ja aber es steht nur nichts da wenn die if abfrage zutrifft

helicon44 24.01.11 19:47

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;
}


sobi2 24.01.11 20:34

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

helicon44 24.01.11 20:54

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;
}


germgerm 24.01.11 21:37

Zitat:

Zitat von sobi2 (Beitrag 21820169)
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.

helicon44 24.01.11 21:43

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

germgerm 24.01.11 21:44

Zitat:

Zitat von helicon44 (Beitrag 21821881)
Stimmt ..... :)

ICH darf goto natürlich verwenden ^^


EDIT: Jetzt musst du noch pw vor der while-Schleife initialisieren: pw[0]=0;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.