Dieser Thread wurde von Moderator/in AJ aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
imhotep schrieb:
Du solltest deinen Tastatur-Puffer leeren, insbesodere, wenn du das Programm aus der Konsole startest, weil es sein kann, dass das letzte Enter, das du gedrückt hast noch drin ist.
flush(stdin);
Siehe ANSI-C-FAQ!!!
Außerdem: Themaverfehlung
@FanFan
So wie du es programmiert hast und es wohl ablaufen soll, musst du Compiler- bzw. Betriebssystemabhängig programmieren.
getch() könntest du z. B. durch getchar() oder ähnliches ersetzen, aber kbhit() ist was spezielles, was im Standard (ANSI) nicht vorkommt.
BTW: F1 löst aus, dass zwei Zeichen im Tastaturpuffer stehen. Das erste Zeichen ist normalerweise eine 0:
...
switch(getch())
{
case 0: //Sondertasten
switch(getch())
{
case F1:
funktion1();
break;
case F2:
funktion2();
break;
}
break;
case ESC:
ende();
}
Näheres dazu findest du auch in der Konsolen-FAQ.
Hallo Arwen, zum Aufteilen eines Strings unter C gibt die Funktion strtok. Beim Speichern kommt es halt darauf an was in dem Array steht. Letztendlich kannst du einfach das komplette Array (wie andere Daten auch) mit fwrite oder fstream in eine Datei schreiben. Du musst halt nur aufpassen, dass du die Elemente auch beim Auslesen wieder voneinander trennen kannst.
musst du nen parser bauen, der deine eingabe verarbeitet. mit bison/yacc geht sowas wunderbar (gibts auf jedem vernünftigen linux-system, evtl. auch für win)
So sehe ich das auch: Wieso willst du denn dein Programm überhaupt verlangsamen? Wenn du ein kleines Spielchen machst dann sind Sleep() alle naselang verkehrt dann brauchst du eine Frame-Bremse.
Ansonsten kann ich mir nicht vorstellen warum dein Programm langsamer als schnellstmöglich ablaufen soll. Wenns bloß auf deiner Konfiguration zu schnell für den User verläuft brauchst du wie gesagt eine Frame-Bremse.
MfG SideWinder
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Du musst auch noch die Standardlibrary mitlinken, in der printf() ist.
Also ich reduziere das BCC/Tlink - Problem einmal auf das Minimalstprogramm:
#include <stdio.h> main() { printf("Hello World"); }
Mit @bcc -c- -k- -P- -mt test.c und
tlink -c test.obj+Emu.lib+Cs.lib+MATHS.LIB,test.com
erhalte ich zig mal die Meldung:
Error: Segment _TEXT exceeds 64K
Error: Segment _TEXT exceeds 64K
Error: Segment _TEXT exceeds 64K
... usw.
(sorry, daß ich mich so dumm anstelle aber bin kein Profi und schon gar nicht was bcc -c und tlink angeht.)
Du musst wie schon erwähnt fstream benutzen. Ich zeige dir ein Beispiel:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream schreiben;
schreiben.open("C:\\Text.txt");
schreiben << "Dieser Text kommt in die Datei";
schreiben.close();
return 0;
}
ERKLÄRUNG:
mit ofstream schreiben erzeugst du ein streamobjekt. Dieses funktioniert wie cout oder cin. Mit der Methode schreiben.open kannst du das objekt eine verbindung zu dieser Datei herstellen lassen. Wenn du das machst achte darauf, dass du 2 Backslashs machen musst !!!
Danach kannst du es verwenden wie jedes Streamobjekt, wie an: schreiben << "Dieser Text kommt in die Datei" zu sehen ist.
Danach musst du die verbindung zu dieser Datei wieder trennen. Das sieht man an der vorletzten zeile schreiben.close(); Das Objekt existiert noch und du könntest jetzt wieder eine verbindung zu einer anderen Textdatei herstellen. Wenn das Programm beendet wird kappt schreiben zwar von alleine die verbindung, jedoch ist es ein besserer Stil es manuel zu schließen. Ich hoffe ich konnte dir weiterhelfen (Bin ja selber noch ein noob)...
Edit by AJ: CPP-Tags eingefügt; bitte das nächste mal selber dran denken
ist ja eigentlich kein problem, wenn du es brauchst, mach die optik halt für jedes betriebssystem extra, die logik bleibt die gleiche.
eine andere möglichkeit wäre, java zu machen. damit wärst du diese sorge (fast) los..