|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
[C++] Problemi lanciando il .exe compilato
Ecco il problema ho un programma in c++ visual studio.
ad un certo punto ho sprintf(MiaStringa,"%s",listbox1->selectedItem->ToString()); printf("%s\n",MiaStringa); la lista è piena di scritte tipo scritta 1 scritta 2 ... se compilo e lancio premendo su un item della lista ho printato l'item stesso (Es premo su scritta 2 e in console compre scritta 2) ora chiudo visual studio e lancio il .exe se premo su "scritta 2" mi compaiono simboli strani se compilo in debug invece funziona sia in compilazione che se lacio l'exe. qualcuno ha sugerimenti??? grazie mille |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Altre info
printf("%s\n",Form1::TrackList->SelectedItem->ToString()); NON FUNZIONA, Stampa Caratteri strani Console::WriteLine(Form1::TrackList->SelectedItem->ToString()); Funziona |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2008
Città: Roma
Messaggi: 126
|
Ad occhio (e memoria) ToString() ti ritorna un'oggetto String.
La WriteLine() funziona xche' ha l'overload per quel tipo. La printf() con il %s tratta i char* quindi "simpippa"(tm). Il fatto che in debug con VS ti funziona e' la solita maledizione Mamma M$ maschera una serie di "sviste" (puntatori/casting/etc.) facendoti girare il tuo sorgente come se niente fosse e quando vai in produzione e' un casino...
__________________
La forza dei forti sta nel traversare le traversie con occhio sereno! (PK) ... I computer sono esattamente come gli esseri umani: fanno qualsiasi cosa tranne che pensare. (John Van Neumann) Siamo brevi, il mondo è sovraffollato di parole. (Stanisław Jerzy Lec) |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Alla fine ho risolto utilizzando uno String::Copy() al posto dell'sprintf
fatto sta che l'sprintf funziona ovunque tranne li... misteri incredibili anche perchè quando lancio la release da VS tutto funge, è quando a VS chiuso lancio l'exe che si blocca tutto... bha |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Codice:
#include <iostream>
using namespace std;
void main(void)
{
int a,b,c;
cout << "Exercize 2: find the smallest of three integer numbers\n" << endl;
cout << "Input 3 different integer numbers:" << endl;
cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c;
if(a < b)
if(a < c)
{
cout << "The smallest of the 3 is a = " << a << endl;
return;
}
if(b < c)
{
cout << "The smallest of the 3 is b = " << b << endl;
return;
}
cout << "The smallest of the 3 is c = " << c << endl;
}
Codice:
#include <iostream>
using namespace std;
void main(void)
{
int a,b,c;
cout << "Exercize 2: find the smallest of three integer numbers\n" << endl;
cout << "Input 3 different integer numbers:" << endl;
cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c;
if(a < b)
if(a < c)
{
cout << "The smallest of the 3 is a = " << a << endl;
return;
}
else if(b < c)
{
cout << "The smallest of the 3 is b = " << b << endl;
return;
}
cout << "The smallest of the 3 is c = " << c << endl;
}
Mi sento stupidissimo. edit: 5 secondi dopo che ho scritto ho realizzato: non avendo messo le parentesi al primo if(a < b), l'else pensava di essere quello relativo al secondo if(a < c)...eppure mi sembrava che VS2010 l'avesse evidenziato insieme al primo if :hmm: Ultima modifica di vendettaaaaa : 19-01-2012 alle 17:05. |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Non avendo messo le parentesi l'else fa riferimento al secondo if e non al primo.
Aggiungi tutte le {} e vedi che andrà |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:46.




















