Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 19. Nov 2018 11:02

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Funktionen in C
BeitragVerfasst: 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:
#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;


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18. Jan 2007 17:22 
Offline

Registriert: 03. Sep 2002 16:12
Beiträge: 46
Hi,
Code:
   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:
void eingabe&#40;char *zz1&#41;&#123;
   scanf&#40;"%&#91;0123456789abcdefABCDEF&#93;", zz1&#41;;
   getchar&#40;&#41;;
&#125; 
dann geht's.

Bye,
Stefan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19. Jan 2007 17:45 
danke.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de