title image


Smiley Re: Unklarheit bzgl. getchar()


#include <stdio.h>

#include <math.h>



char cTxt[255];

int i, j, k, l; //Laufindexe

int iKontrollzahl=0;

double iDezimalzahl=0;

char cFalscheWerte[255];

char cEnde;



int main(void)

{

printf("Dieses Programm rechnet eingegebene Hex-Zahlen in Dezimalzahlen um!\n\n\n");



while (cEnde!='q')

// Schleife für die Abbruchbedingung Quit

{

printf("\nGebe Sie eine beliebig lange Hex.-Zahl in Form 0x... ein: ");

scanf("%s",&cTxt);

if(cTxt[0]=='0' && cTxt[1]=='x') // Ermittlung der richtigen Eingabe mit 0x

{

for (i=2; cTxt[i]!=0 ;i++); // Ermittlung der Größe der Zeichenkette

k=i;

for (j=2; j<i; j++) // Test der einzelnen chars auf Gültigkeit und gleichzeitiges umwandeln in Dezimalzahl

{

if (cTxt[j]>=49 && cTxt[j]<=57)

cTxt[j]=cTxt[j]-48;

else if (cTxt[j]>=97 && cTxt[j]<=102)

cTxt[j]=cTxt[j]-87;

else if (cTxt[j]>=65 && cTxt[j]<=70)

cTxt[j]=cTxt[j]-55;

else

{

iKontrollzahl=1;

cFalscheWerte[l]=cTxt[j];

l++;



}



}

for (l=0; cFalscheWerte[l]!=0 ;l++); //Schleife zur Ausgabe der falsch eingegebenen Zeichen wenn nötig



if (l==1)

printf("Das Zeichen %c ist keine gueltige Hex-Schreibweise!",cFalscheWerte[0]);

else if (cFalscheWerte[0]!=0)

{

printf("Die Zeichen ");

for (j=0; j<l; j++)

printf ("%c ", cFalscheWerte[j]);



printf(" sind keine gueltigen Hex-Schreibweisen!");

}



for (j=2, i-=3; j<k; j++) // Schleife zur Berechnung der gesamten Dezimalzahl

{

iDezimalzahl =iDezimalzahl + cTxt[j] * pow( 16, i );

i--;



}

if (iKontrollzahl==0) // Bedingung, wenn Eingabe korrekt, dann Ausgabe der Dezimalzahl

printf("%lf",iDezimalzahl);





}

else

printf("falsche eingabe");



printf("\n\nWenn Sie eine weitere Zahl umwandeln wollen,\n beliebe Taste druecken, zum Beenden q\n\n\n");

while ((cEnde = getchar()) != '\n' && cEnde != EOF);

cEnde= getchar();

}





return 0;

}









Da von der vorherigen Eingabe noch ein \n im Puffer steht musst du den Puffer erst leeren, bevor du auf eine Taste wartest.





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: