Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Funktionen in C

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c89
Gast





BeitragVerfasst am: 14. Jan 2007 21:14   Titel: Funktionen in C

Hallo.
Ich habe folgendes Problem: Wenn ich folgenden Code ausführe, fragt mich das Programm nur nach der ersten Eingabe und nimmt für die zweite Eingabe automatisch einen Eingabewert an bzw. lässt keine zweite Eingabe zu.

Was ist an dem Code falsch bzw. wie löse ich dasProblem eleganter?
Es darf nur der C89-Standard verwendet werden.

Code:

#include <stdio.h>
#include <string.h>
#define N 2

void eingabe(char *zz1){
   scanf("%[0123456789abcdefABCDEF]", zz1);
}


// ***************************** main ******************************
int main()
{
   char z1[20], z2[20];

   printf("\n\n");

   printf("\n\n \t Programm 1 \n\n");
   
   printf("Bitte eine %d-stellige Hex-zahl eingeben: ",N);
      eingabe(z1);
            printf("\nlänge: %i\n",strlen(z1));
   if(strlen(z1) != N)
      {
         printf("Falsche Eingabe. Ende.\n\n");
         exit(1);
      }
   printf("Bitte eine %d-stellige Hex-zahl eingeben: ",N);
      eingabe(z2);
      printf("\nlänge: %i\n",strlen(z2));
      
   if(strlen(z1) != N)
      {
         printf("Falsche Eingabe2. Ende.\n\n");
         exit(1);
      }
   
   printf("Ende.\n\n");
   return 0;
}
 

cxb



Anmeldungsdatum: 03.09.2002
Beiträge: 46

BeitragVerfasst am: 18. Jan 2007 17:22   Titel:

Hi,

Code:

   if(strlen(z1) != N)
      {
         printf("Falsche Eingabe2. Ende.\n\n");
         exit(1);
      }


ich glaube da gehört z2 hin, und nicht z1.

Aber das ist nicht das Problem.
Das Problem ist, dass du das \n am Ende der Zeile nicht abfängst. Somit wird: Erste Eingabe "AA\n" in AA umgewandelt und an die Zweite EIngabe ein "\n" übergeben. => z2 immer leer.

Änder' deine eingabe Funktion in
Code:
void eingabe(char *zz1){
   scanf("%[0123456789abcdefABCDEF]", zz1);
   getchar();
}

dann geht's.

Bye,
Stefan
 
Benutzer-Profile anzeigen Private Nachricht senden

c89
Gast





BeitragVerfasst am: 19. Jan 2007 17:45   Titel:

danke.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy