Chiiter schrieb:
Softwaremaker schrieb:
Das er da einiges vermischt ist doch nicht schlimm.
Mach mal Prozentsymbol bei scanf( "&d", &anzahl) --> scanf( "%d", &anzahl);
Ausserdem ist das mehr was für die C++ - Sektion
Super Danke
mir ist das einfach nicht aufgefallen. Hab den Fehler gleich 2 mal im Quellcode
Jetzt geht es. Also möglich scheint es ja zu sein 2 Sprachen in einem Code zu verwenden, aber ich denke mal sollte eigentlich bei einer bleiben. Oder wird in größeren sowas praktiziert?
Ich denke, dass du in einigen Fällen sogar nicht darum kommen wirst, da einige Schnittstellen nur in C vorliegen. Allerdings sollte man es trotzdem vermeiden, wenn es denn möglich ist. Zum Beispiel bin ich mir nicht sicher, ob der Aufruf von std::flush nicht eventuell ein undefiniertes Verhalten hervorruft.
Das in der Konsole ausgeführte Programm ist ein Gameserver(Battlefield 1942)
und dieser wird immer über eine grafische Oberfläche gestarted und ich weiß nicht wo ich welche Werte übergeben muss, damit der Server started wie ich es will, also muss ich die grafische Oberfläche dazu nutzen.
Hallo Allerseits,
ich stehe vor dem Problem, dass ich eine Funktion in einer DLL habe, die per RunDLL32 aufgerufen wird. In dieser Funktion werden printf-Ausgaben gemacht, aber diese werden von RunDLL32 nicht auf der Konsole weitergegeben. im einfachsten Fall will ich so was machen:
EXPORTED_FUNCTION void CALLBACK world(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
printf("Hello World\n");
}
Das funktioniert auch alles so weit, dass die Funktion per
RunDLL32 hello.dll,world
aufgerufen werden kann. Nur die Ausgabe wird halt nicht gemacht.
Ach ja, ich arbeite mit MinGW und Eclipse.
Naja ganz einfach, intern findet dort ein cast von deinen chars die im string stehen und dem int-array statt. Soll heißen, deine Chars, werden in ihre äquivalenten ASCII-Werte umgewandelt.
JustSomeCoder schrieb:
PeterMueller schrieb:
Was ist itoa?
Bist du echt nicht in der Lage das selbst herauszufinden oder warst du nur zu faul es zu versuchen?
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
Eher zu faul. (kommt nicht wieder vor)
Funzt jetzt
A votre service:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
char ein [21]; // Zeiger auf den Eingabestring max. 20 zeichen + \0
char *aus; // Zeiger auf den Ausgabestring
int leng; // Anzahl der Zeichen im Eingabestring
int biswert [21]; // hier wird je Zeichen im Eingabestring festgehalten,
// wieweit es im Zielstring nach rechts geschoben
// werden soll - abh„ngig von der H„ufigkeit des
// Zeichens
void rek (int pos, int von, int bis)
/***********************************************/
/* Rekursive Funktion zur Ermittlung s„mtli- */
/* cher Kombinationen der Zeichen im Eingabe- */
/* string */
/* Eingabe: Zeiger auf das erste Zeichen im */
/* Eingabestring (global definiert) */
/* Ausgabe: šber den Zeiger <aus> (global) */
/* Vorbereitung: */
/* Globale Variable (int) leng */
/* enth„lt Anzahl der Zeichen im */
/* Eingabestring */
/***********************************************/
{
int i ; // Laufvariable
if (ein[pos] != '\0')
{
for (i=von; i < bis; i++) // Zeichen auf allen Positionen
{ // von bis einsetzen
if (aus[i] == ' ') // wenn Position unbesetzt,
{ // Zeichen einsetzen und mit n„chstem
aus [i] = ein[pos] ; // Zeichen weitermachen
rek (pos+1, ein[pos] == ein[pos+1] ? i+1 : 0, biswert[pos+1]) ;
aus [i] = ' ' ; // Position wieder l”schen
}
}
}
else
{
printf ("\n%s", aus) ;
}
}
void getein (void)
/***********************************************/
/* Eingabestring holen und L„nge ermitteln */
/***********************************************/
{
clrscr () ; // Bildschirm l”schen
printf ("Bitte geben Sie den Eingabestring ein ...\n") ;
scanf ("%20s", ein) ; // Eingabe entgegennehmen max. 20 Zeichen
leng = strlen (ein) ; // Tats„chliche L„nge ermitteln
}
void getmem (void)
/***********************************************/
/* Speicher fr Ausgabestring reservieren und */
/* initialisieren */
/***********************************************/
{
aus = malloc (leng + 1) ; // Speicher (Anzahl Zeichen + \0 reservieren
aus [leng] = '\0' ; // Ausgabestring mit Space + \0
memset (aus, ' ', leng) ; // initialisieren
}
int sort (char *a, char *b)
/***********************************************/
/* Vergleichsfunktion fr die Sortierung */
/***********************************************/
{
return (*a - *b) ;
}
void fillbis (void)
/***********************************************/
/* Fr mehrfach vorkommende Zeichen wird ab- */
/* h„ngig von ihrer Position bestimmt, wie */
/* weit sie nach rechts geschoben werden */
/***********************************************/
{
int i ;
biswert [leng] = leng ;
for (i = leng - 1; i >= 0; i--)
{
if (ein [i] == ein [i+1])
biswert [i] = biswert [i+1] - 1 ;
else
biswert [i] = leng ;
}
}
void main (void)
/***********************************************/
/* H A U P T F U N K T I O N */
/***********************************************/
{
getein () ; // hol Eingabe
getmem () ; // Speicher fr den Ausgabestring besorgen
qsort (ein, leng, 1, (int (*) ()) sort); // sortieren des Eingabestrings
fillbis () ; // Endposition je Zeichen festlegen
rek (0,0,biswert[0]) ; // Los gehts
free (aus) ; // Speicher fr Ausgabestring wieder freigeben
}
Hallo
Wieso erinnert mich dein Beitrag an den eines Türken? Komisch...
Es heisst:
-als bei Unterschieden
-wie bei Vergleichen
-voraus
Dein Beitrag ist selbst nach mehrmaligen lesen noch recht knifflig zu entziffern. Falls du wirklich auf Hilfe hoffst, streng dich an, hier muss keiner antworten. Ich weiger mich, dir zu helfen.
Mfg.
way
Noch ein kleiner Hinweis:
Da Du ja bei der Eingabe alle Zeichen außer a-z und A-Z ausschließen musst, kannst Du die Eingabe darauf prüfen, ob das eingegebene Zeichen ein Buchstabe ist und nur dann Deine "Umwandlung" vornehmen. Dafür gibt es isalpha(), also:
if( isalpha(buchstabe) )
{
// Buchstabe "umwandeln" und wieder ausgeben
}
Badestrand schrieb:
Anonym schrieb:
Aber wieso werden hier alle nach den 5 genullt?
Alle folgenden Werte, die du nicht angibst, werden mit dem Default-Wert belegt (bei "int" ist das 0).
Alles klar danke!
Gibt es wichtige Gründe für den Visual C++ 6.0?
Alter Rechner, Schule oder?
Wenn nicht, besorg dir einen aktuelleren Compiler
Was wär denn bei folgendem ein Problem:
//Die "#include's" kommen von den verschiedenen Befehlen die ich ausprobiert habe
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
void intro(void);
int main(void)
{
//Von hier...
//(TEXT)
// ...bis hier soll der Text von Anfang an ausgegeben werden.
intro();
}
void intro(void)
{
std::cout << "1.blabla" << std::endl;
getch();
std::cout << "2.blabla" << std::endl;
getch();
system ("cls");
std::cout << "O.K.";
}
Na ja, mir gefällt die Kombi von C und C++ Headern nicht, du
hast schon Aussichten das dir die Kombi irgendwann mal Probleme macht.
MfG f.-th.
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung 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.
1. Bitte cpp-Tags benutzen, zur besseren Lesbarkeit!
2. fflush(stdin) ist nicht so toll, da MS-only und absolut nicht standardkonform. Es gibt bessere Lösungen. Such über die Forensuche mal nach "Eingabepuffer leeren".
3. Leere den Eingabepuffer nochmal nach der printf-Anweisung.