Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-05-2007, 14:23   #1
santaclause83
Member
 
Iscritto dal: Mar 2006
Messaggi: 131
[C]ripulire le stringhe fino al loro ultimo contenuto significativo...

una volta che ho copiato una stringa dentro un buffer,rimangono delle posizioni del buffer inizializzate a caratteri incomprensibili.

come faccio a ripulire la stringa fino all'ultimo carattere significativo?

avevo pensato ad allocare un altra area di memoria con un altro puntatore a stringa grande quanto strlen(stringa sporca),ma stampandone il risultato sembra che strlen tenga conto dello spazio inutilizzato...
santaclause83 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 14:32   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da santaclause83 Guarda i messaggi
una volta che ho copiato una stringa dentro un buffer,rimangono delle posizioni del buffer inizializzate a caratteri incomprensibili.

come faccio a ripulire la stringa fino all'ultimo carattere significativo?
Probabilmente non hai fatto la copia come si deve. Una stringa deve essere terminata dal carattere nullo, in caso contrario puoi avere brutte sorprese ...
Posta il codice che vediamo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 14:47   #3
santaclause83
Member
 
Iscritto dal: Mar 2006
Messaggi: 131
il problema è un pò più complicato,devo prendere una stringa e a seconda degli argomenti,decidere cosa fare.

ho fatto una sscanf sulla stringa in input con il numero massimo degli argomenti da leggere,con i rispettivi caratteri di formattazione.

il problema è che quando c'è un comando che richiede argomenti minori del massimo,per fare le cose fatte bene devo verificare che le altre aree riservate alle stringhe non siano inizializzate,o abbiano un contenuto insignificvativo.

ad esempio,un comando che ha la semantica PRINT NOMEFILE,se dopo l'utente scrive altre cose,devo far si che il comando non abbia più alcun senso,se invece controllo solo i primi due argomenti e gli altri li lascio perdere l'utente potrebbe permettersi di scrivere quello che gli pare,avendo comunque attivato il comando..

insomma avevo pensato a una cosa simile...

ti passo un frammento:

arg2 = (char *)malloc(sizeof(char)*N);

diff = strlen(comandi);
effettivo = (char *)malloc(sizeof(char)*diff);
strcpy(effettivo,comandi);

sscanf(effettivo,"%s %s %s %s",arg1,arg2,arg3,arg4);

//controllo sulla stringa per vedere cosa ho inizializzato
printf("arg1 = %s arg2 = %s arg3 = %s arg4 = %s\n",arg1,arg2,arg3,arg4);

if(strcmp(arg1,"print") == 0 && arg2 != 0 && arg3 == 0 && arg4 == 0){
printf("%s %s\n",arg1,arg2);
return 3;//ritornami il valore corrispondente al codice operativo print
}
else if....controllo simile,ma per altri comandi+

alla fine faccio ritornare un valore di errore dove so che il comando o non è stato scritto o è stato scritto male.

spero di essere stato chiaro...

grazie
santaclause83 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:06   #4
santaclause83
Member
 
Iscritto dal: Mar 2006
Messaggi: 131
il problema si risolve in parte se inizializzo ogni "arg" come puntatore a char,nel senso che quelli vuoti adesso se li stampo rimangono vuoti.

soltanto che non riesco a trovare il termine di confronto che nella guardia dell'if li fa riconoscere come inutilizzati..

NULL non funziona
EOF mi dice che comparison between pointer e integer non si può fare
"\0" non funziona


santaclause83 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:10   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da santaclause83 Guarda i messaggi
diff = strlen(comandi);
effettivo = (char *)malloc(sizeof(char)*diff);
strcpy(effettivo,comandi);
'diff' contiene il numero di caratteri della stringa, escluso il carattere nullo. La allocazione è sbagliata perché allochi spazio solo per i caratteri della stringa ma non per il nullo. Usando poi strcpy però vengono copiati tutti i caratteri compreso il nullo. Pertanto vai fuori dall'area di memoria allocata.

Per il resto ... vedo che ci sono diverse altre variabili, arg3, arg4, ecc... che non sono come sono dichiarate. Se sono variabili 'automatiche' (locali ad una funzione) e non le hai inizializzate, chiaramente puoi avere molte brutte sorprese.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:20   #6
santaclause83
Member
 
Iscritto dal: Mar 2006
Messaggi: 131
arg3 e arg4 le alloco con una malloc all'inizio della funzione di grandezza prefissata.

se le inizalizzo a NULL i controlli mi funzionano!!


sul problema di diff non mi dava segmentation fault,ma l'ho corretto ugualmente

per ora considero il problema risolto alla prossima e grazie
santaclause83 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 15:27   #7
santaclause83
Member
 
Iscritto dal: Mar 2006
Messaggi: 131
PROBLEMA:se inizializzo un puntatore a char come NULL e poi con la sscanf ci vado a scrivere dentro perchè mi restituisce cmque NULL???????
santaclause83 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
NZXT Flex, lo 'scandalo' del PC gaming a...
Robot lavavetri in offerta su Amazon: EC...
Attenti a questo update fake di Windows ...
NIO chiede la standardizzazione di batte...
Da 80 mesi-uomo a poche ore: l'AI cambia...
In 2 settimane senza social il cervello ...
Amazon top 7 di oggi: 2 portatili intere...
SteamGPT trapela dal client Steam: ecco ...
Boom clamoroso per questo piccolo produt...
Amazon Luna saluta gli store di terze pa...
Windows Update non sarà più un incubo: M...
Stampante HP con Wi-Fi e 3 mesi di inchi...
Metro 2039 potrebbe essere il nuovo capi...
Call of Duty: Modern Warfare 4 l'uscita ...
Mega risparmi su Amazon Haul fino a mezz...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:56.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v