Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » bibliothek wird nicht erkannt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.12.2007, 13:55 Uhr
~malibu85
Gast


Hallo ich wollte ein C-Programm damit steuern, dass man über die Tastatur eine Taste z.B die y-taste für yes eingibt und dann eine Anweisung durchgeführt wird. Das einlese wollte ich mit getch machen und als bibliothek #include<conio.h> als zusätzliche bibliothek einbinden aber bekomme dabei immer eine Fehlermeldung. Welche bibliothek ist denn sonst dafür verantwortlich? Oder wie kan ich diese Bibliothek zugänglich für das Programm machen?
gruß malibu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.12.2007, 14:11 Uhr
~malibu85
Gast


bekomme folgende Fehlermeldung
macbook-pro:C-Programme User$ gcc -o zinsrechnung_erweitert Zinsrechnung_erweitert.c
Zinsrechnung_erweitert.c:4:18: error: conio.h: No such file or directory

wichtig hier nur der teil ab 4:18:......
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.12.2007, 18:00 Uhr
0xdeadbeef
Gott
(Operator)


conio.h ist kein Standardheader, sondern eine Windows-Erweiterung. Also, genaugenommen ist es einen DOS-Erweiterung, die in Windows dann übernommen wurde. MacOS X dagegen beruht auf einem Darwin-Kernel, also BSD-UNIX.

Befrag mal google nach ncurses, oder, ein Blick in die Linux-FAQ wirft folgenden uralten Code aus: www.fun-soft.de/showtopic.php?threadid=5157
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.12.2007, 18:47 Uhr
~malibu85
Gast


ah ja stimmt für das einlesen einer Taste, gibt es in c getchar() und diese funktion st in <stdio.h> enthalten.Das habe ich auch gerade erst gelesen. Ich habe es mal ausprobiert und es funktioniert. Jetzt wollte ich aber ein Programm um eine Option erweitern. Und zwar soll nachdem eine Zinseszinsrechnung durchgeführt wurde dem Benutzer die möglichkeit geboten werden durch das drücken einer Taste die Wertsteigerung in % des angelegten Kapitals auszugeben. Nun liegt es mir nur erstmal daran mit getchar eine taste einzulesen und, dass der Compiler in der Lage ist diese auch als String bzw char zu erkennen. Im folgenden klappt dies leider nicht. Nachdem das Ergebnis (KapitalwertNeu) nach der Berechnung ausgegeben wurde, beachtet der Compöer die getchar() -Anweisung gar nicht mehr und gibt zwar den in printf angegebenen Text aus aber unterschlägt die Anweisung des Einlesens der Taste und die Ausgabe der eingelesenen Taste. Wie gesagt. Das Einlesen und Ausgeben einer Taste und der zuehörigen Bezeichnung aus dem ASCII-Code haut bei mir in einem seperaten Programm hin aber in dem folgendem

C++:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>




int main ()
{
float Kapitalwert,Zins,Jahre,KapitalwertNeu,Klammerausdruck;
char taste;

printf("Geben Sie einen Kapitalwert ein:\n");
scanf("%f", &Kapitalwert);

printf("Geben Sie nun den Zinssatz an:\n");
scanf("%f",&Zins);

Zins=1+Zins;

printf("Geben Sie dauer der Verzinsung in Jahren an:\n");
scanf("%f",&Jahre);


Klammerausdruck=pow(Zins,Jahre);
KapitalwertNeu=Kapitalwert*Klammerausdruck;

printf("Das angelegte Kapital ist nach %f Jahren\n\n",Jahre);
printf("%f Euro Wert.\n",KapitalwertNeu);

/*hier liegt das Problem*/
printf("druecken sie eine Taste\n");
taste=getchar();
printf("die eingabe war %c\n\n",taste);

return(0);
}





sieht hier vielleicht jemand den Fehler?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.12.2007, 18:55 Uhr
0xdeadbeef
Gott
(Operator)


Das wird daran liegen, dass noch Reste im Stream vorhanden sind. Es gibt im Grunde zwei Möglichkeiten damit umzugehen; die meines Erachtens sauberere ist, die Eingabe zeilenweise abzuhandeln, also

C++:
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include <string.h>

#define LINE_MAX 100

int main(void) {
  char line[LINE_MAX];
  int num;

  printf("Zahl eingeben: ");
  fflush(stdout);

  fgets(line, LINE_MAX, stdin); /* Zeile in line einlesen. */
  sscanf(line, "%d", &num); /* Zahl aus dem String parsen */

  getchar(); /* Keine Reste im Stream, also blockt das jetzt */
}


Die andere Möglichkeit ist, bis zum Zeilenende zu ignorieren, bei Benutzereingaben sollte das ausreichen, um die Reste im Stream zu beseitigen, also

C++:
while(getchar() != '\n');


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 15.12.2007 um 18:56 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.12.2007, 00:17 Uhr
~malibu85
Gast


Hab den Quelltext kopiert und haut auch wunderbr hin aber kannst du kurz was zu #define LINE_MAX 100 sage? Deklarierst du da einen eigenständigen Datentyp?
Grüße
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.12.2007, 00:36 Uhr
0xdeadbeef
Gott
(Operator)


Ne, das bedeutet nur, dass vor der eigentlichen Kompilierung überall im Quelltext LINE_MAX durch 100 ersetzt wird. In C ist das ein üblicher Weg, Konstanten zu deklarieren, in C++ würde man eher enums oder int const benutzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: