|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
|
[C++] problema stringhe \0
Ciao a tutti,
sto riscontrando un problema un po' anomalo, di cui non capisco il motivo. Il codice è il seguente: Codice:
#include <cstring> #include <string> #include <iostream> using namespace std; char* toUpper(char* str){ char* cur = str; while (*cur!= '\0') { *cur = toupper(*cur); cur++; } return str; } int main() { char * b = "prova"; cout << toUpper(b) << endl; system("pause"); } La funzione dovrebbe modificare la stringa passata in input e restituire un puntatore alla stringa stessa
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
edit
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 493
|
non so se dico una cazzata ma la stringa b ha il terminatore?
![]() cioè non dovrebbe essere: Codice:
char * b = "prova\0"; ![]()
__________________
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non è una questione di terminatore, le stringhe definite in quel modo vengono terminate automaticamente dal compilatore. Il problema sembra essere che in questo modo la stringa è definita costante.
Prova così: Codice:
char b[] = "prova"; Usando invece: Codice:
char *b = "prova"; ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 11-07-2008 alle 12:23. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
|
Perfetto ora funziona, grazie mille
![]()
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:48.