|
|
|
![]() |
|
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 16: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: 18:15.