Funktionen in C

Antworten
Nachricht
Autor
c89

Funktionen in C

#1 Beitrag von c89 » 14. Jan 2007 21:14

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: Alles auswählen

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

void eingabe&#40;char *zz1&#41;&#123;
	scanf&#40;"%&#91;0123456789abcdefABCDEF&#93;", zz1&#41;;
&#125;


// ***************************** main ******************************
int main&#40;&#41;
&#123;
   char z1&#91;20&#93;, z2&#91;20&#93;;

   printf&#40;"\n\n"&#41;;

	printf&#40;"\n\n \t Programm 1 \n\n"&#41;;
	
	printf&#40;"Bitte eine %d-stellige Hex-zahl eingeben&#58; ",N&#41;;
		eingabe&#40;z1&#41;;
				printf&#40;"\nlänge&#58; %i\n",strlen&#40;z1&#41;&#41;;
	if&#40;strlen&#40;z1&#41; != N&#41;
		&#123;
			printf&#40;"Falsche Eingabe. Ende.\n\n"&#41;;
			exit&#40;1&#41;;
		&#125;
	printf&#40;"Bitte eine %d-stellige Hex-zahl eingeben&#58; ",N&#41;;
		eingabe&#40;z2&#41;;
		printf&#40;"\nlänge&#58; %i\n",strlen&#40;z2&#41;&#41;;
		
	if&#40;strlen&#40;z1&#41; != N&#41;
		&#123;
			printf&#40;"Falsche Eingabe2. Ende.\n\n"&#41;;
			exit&#40;1&#41;;
		&#125;
	
	printf&#40;"Ende.\n\n"&#41;;
	return 0;
&#125;

cxb
Beiträge: 46
Registriert: 03. Sep 2002 16:12

#2 Beitrag von cxb » 18. Jan 2007 17:22

Hi,

Code: Alles auswählen

   if&#40;strlen&#40;z1&#41; != N&#41;
      &#123;
         printf&#40;"Falsche Eingabe2. Ende.\n\n"&#41;;
         exit&#40;1&#41;;
      &#125; 
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: Alles auswählen

void eingabe&#40;char *zz1&#41;&#123;
   scanf&#40;"%&#91;0123456789abcdefABCDEF&#93;", zz1&#41;;
   getchar&#40;&#41;;
&#125; 
dann geht's.

Bye,
Stefan

c89

#3 Beitrag von c89 » 19. Jan 2007 17:45

danke.

Antworten