|
You last visited: Today at 03:45
Advertisement
Variable corrupted!?
Discussion on Variable corrupted!? within the C/C++ forum part of the Coders Den category.
04/22/2012, 15:39
|
#1
|
elite*gold: 60
Join Date: Jan 2010
Posts: 855
Received Thanks: 103
|
Variable corrupted!?
Heyho
Ich hab angefangen das Spiel Hangman zu schreiben. Leider funktioniert mein Programm nicht richtig, und mir wird folgende Fehlermeldung mitten im Programm ausgegeben.
Run-Time Check Failure #2 - Stack around the variable 'geraten' was corrupted.
Ich hab mir schon die Finger wund gegoogelt, nur leider finde ich keine Lösung für mein Problem.
Und lasst mich bitte in Frieden mit eurem:"cout/cin ist viel besser"/"int main ist richtig, alles andere ist falsch", ich hab meine Gründe das ich es so verwende. Desweiteren möchte ich auch keine Verbesserungsvorschläge.
Code:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include "gconio.h"
#include <windows.h>
int g_erraten=0;
int g_geratenascii;
int g_loesungascii[30];
int g_checking=1;
void fertig(char geraten[]);
int strlaenge(char loesung[]);
void strgets(char loesung[],char geraten[]);
void ersetzen(char eingegeben, char loesung[],char geraten[]);
void main()
{
char loesung[30];
char geraten[30];
char eingabe;
int laenge;
int check;
printf("Gib das Loesungswort ein:\n");
strgets(loesung,geraten);
laenge=strlaenge(loesung);
do{
system("cls");
for (int i=0;i<=laenge-1;i++)
printf("%c",geraten[i]);
printf("\nDeine Eingabe:");
scanf("%c",&eingabe);
g_geratenascii=eingabe;
ersetzen(eingabe,loesung,geraten);
fertig(geraten);
}while (g_checking == 0);
system("cls");
printf("Glueckwunsch :D Du hast gewonnen.");
getch();
}
void fertig(char geraten[])
{
int i=0;
g_checking=1;
for (i=0;i<30;i++);
{
if (geraten[i]=='_')
g_checking==0;
}
}
void ersetzen(char eingegeben,char loesung[],char geraten[])
{
int x;
for(int i=0;i<=30;i++)
{
if ((g_loesungascii[i]==g_geratenascii)||(g_loesungascii[i]==g_geratenascii+32)||(g_loesungascii[i]==g_geratenascii-32))
{
geraten[i]=eingegeben;
g_erraten++;
}
}
}
int strlaenge(char loesung[])
{
for(int i=0;i<=30;i++)
{
if ((loesung[i] == '\0')||(loesung[i] == '\r'))
return i;
}
}
void strgets(char loesung[],char geraten[])
{
for(int i=0;i<=30;i++)
{
loesung[i]=getch();
geraten[i]='o';
g_loesungascii[i]=loesung[i];
printf("x");
if (loesung[i] == '\r')
{
geraten[i]='\0';
return;
}
}
}
|
|
|
04/22/2012, 15:48
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
kann jetzt nicht alles durchsehen, ist nen bissel unübersichtlich, aber:
1. system -> böse -jaja :P
2. Die funktion macht? (doppel == statt zuweisung?)
Code:
void fertig(char geraten[])
{
int i=0;
g_checking=1;
for (i=0;i<30;i++);
{
if (geraten[i]=='_')
g_checking==0;
}
}
3.
Code:
for (int i=0;i<=laenge-1;i++) -> for (int i=0; i < laenge; i++)
4.
Code:
for(int i=0;i<=30;i++)
access violation... muss < 30 sein...
5. verlieren kann man noch nicht? :P
|
|
|
04/22/2012, 16:01
|
#3
|
elite*gold: 60
Join Date: Jan 2010
Posts: 855
Received Thanks: 103
|
Quote:
Originally Posted by Dr. Coxxy
kann jetzt nicht alles durchsehen, ist nen bissel unübersichtlich, aber:
1. system -> böse -jaja :P
2. Die funktion macht? (doppel == statt zuweisung?)
Code:
void fertig(char geraten[])
{
int i=0;
g_checking=1;
for (i=0;i<30;i++);
{
if (geraten[i]=='_')
g_checking==0;
}
}
3.
Code:
for (int i=0;i<=laenge-1;i++) -> for (int i=0; i < laenge; i++)
4.
Code:
for(int i=0;i<=30;i++)
access violation... muss < 30 sein...
5. verlieren kann man noch nicht? :P
|
2.) Danke, deswegen war es nach dem ersten mal vorbei 
3.) Ist doch nur ein Schönheitsfehler ;D
4.) Danke ;D
5.) Wollte ich gerade einbauen, dann kam der Fehler.
|
|
|
04/22/2012, 16:27
|
#4
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Quote:
|
ich hab meine Gründe das ich es so verwende
|
Die interessieren mich brennend. Und das meine ich vollkommen unironisch.
|
|
|
04/22/2012, 16:34
|
#5
|
elite*gold: 60
Join Date: Jan 2010
Posts: 855
Received Thanks: 103
|
Quote:
Originally Posted by xNopex
Die interessieren mich brennend. Und das meine ich vollkommen unironisch.
|
Cout/cin benutze ich nicht, da wir in der Schule nicht nur Konsolenanwendungen programmieren, sonder später auch auf Mikrochips. Und mein Professor sagte das wir auf diesen nur mit C programmieren können, also gewöhne ich es mir garnicht anders an, desweiteren ist es besser, das ich es gleich habe wie meine Klassenkameraden, falls ich ihnen was erklären muss, denn die wissen nichtmal das es oben genannte befehle gibt.
void main hab ich mir eben so angewöhnt, und ich kenne keinen Grund warum ich nicht nehmen sollte. In meiner Entwicklungsumgebung (VS2008) funktioniert es einwandfrei.
Genug?
|
|
|
04/22/2012, 16:45
|
#6
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Dann programmier doch gleich in C. Was du eh schon, vermutlich unbewusst, größtenteils tust.
Quote:
|
ich kenne keinen Grund warum ich nicht nehmen sollte.
|
Weils hässlich ist und nicht portabel.
|
|
|
04/22/2012, 16:52
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Wär mir neu, dass man auf Microchips kein C++ programmieren könnte.
|
|
|
 |
Similar Threads
|
Variable
06/10/2011 - General Coding - 5 Replies
Moin,
Nur eine kleine frage uber ne c# variable also:
Ich hab mehere form's in meine programm und will eine string deklarieren fuer das ganze programm.
Ich hab es so gemacht :
public string user = "Username"
|
Cost of accessing a casted variable vs. assigning the casted variable? (C#)
01/05/2011 - CO2 Programming - 5 Replies
I know that in unmanaged C++, casting is at compile-time, so it's better to avoid the assignment and simply access it for all instances. However, in C#, I have no idea since I'm pretty new to it.
|
Variable ?!
11/27/2010 - AutoIt - 14 Replies
Huhu E*PvP :)
Ich habe mal wieder eine frage :D..
mir wurde ja schon öfters gesacht das ich meinen source "Besser gestalten soll".
Also dachte ich mir mhm ok..!
und ich wollte wissen wie ..am also ..og >_<
|
Überprüfen ob Variable Eine Variable ist
10/16/2010 - AutoIt - 26 Replies
Hey leute ich wollte fragen ob/wie man überprüfen kann
ob eine Variable eine Variable ist z.b. so
$k = 1
$i = $k
if $i = VARIABLE Then
msgbox(0,'$i ist eine variable!!','')
endif
PS:Wp releast man nochma TuT (z.b. für metin2??)
|
How do I add a variable
08/21/2009 - CO2 Private Server - 4 Replies
Couldn't find a guide when I searched. I want to make a variable so it will check how many times the player has already used unknown man. I know how to use the variable, but just don't know how to make it.
Oh yea this is LOTF
|
All times are GMT +1. The time now is 03:45.
|
|