|
|||||||
|
|
|
![]() |
|
|
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: 499
|
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 13: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: 07:10.



















