Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ora mi tocca solo scrivere un metodo per modificare tutto file.
Nel senso aggiungere i backslash
Se il Json è salvato in un file, non serve modificarlo.
Quando immetti una stringa in una variabile da codice, deve essere delimitata dalle virgolette, se la stringa contiene delle virgolette il compilatore deve essere messo in condizione di distinguere le virgolette che rappresentano testo, dalle virgolette che delimitano la stringa.
Nella memoria i backslash non ci sono.
Se carichi un file Json da file, lo stesso finisce in memoria senza backslash e tutto funziona regolarmente, prova questo codice C che carica il file Thejuster.json allegato:
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// IndexOf come in C#
int IndexOf(constchar*str, constchar*subStr, int startPos){
int len =strlen(str);
int subLen =strlen(subStr);
// parametri fuori range
if(startPos >= len || subLen == 0)return-1;
// ricerca posizione sottostringa
for(int i = startPos; i <= len - subLen; i++){
if(strncmp(&str[i], subStr, subLen)== 0){
return i;
}
}
return-1;// non trovato
}
// Substring come in C#
char* Substring(constchar*str, int startPos, int length){
int strLength =strlen(str);
// startPos fuori range
if(startPos < 0 || startPos >= strLength){
returnNULL;
}
// fino alla fine se length è negativo o supera la lunghezza
Failed to open file: "Thejuster.json" = il file non esiste nel percorso specificato.
I file che hai allegato (CommonEvents1.json e CommonEvents2.json), vengono aperti e correttamente analizzati con il codice che ti ho postato alle 11:11.
CommonEvents1.json da:
Codice sorgente - presumibilmente C# / VB.NET
id:1 "name":"perspective: normal"
id:2 "name":"perspective: 1st person"
id:3 "name":"Texture Personaggi"
id:4 "name":"Perspective Talk"
id:5 "name":"Crea Comandi"
id:6 "name":"Mostra Comandi"
id:7 "name":"Nascondi Comandi"
id:8 "name":"Prospettiva Interni"
id:9 "name":""
id:10 "name":"--battaglia"
id:11 "name":"Eroe Trasparente"
id:12 "name":"Eroe Normale"
id:13 "name":"== Pioggia =="
id:14 "name":"== Nebbia =="
id:15 "name":"= Rimuovi Clima ="
id:16 "name":"= IN MAPPA ="
id:17 "name":"= USCITA MAPPA ="
Process returned 0 (0x0) execution time : 0.045 s
Press any key to continue.
e CommonEvents2.json da:
Codice sorgente - presumibilmente C# / VB.NET
id:1 "name":"CallUI"
id:2 "name":""
id:3 "name":""
id:4 "name":""
Process returned 0 (0x0) execution time : 0.023 s
Press any key to continue.
Il codice che ti ho proposto è in C standard e l'ho scritto e compilato in CODE::BLOCKS.
da dove vengono le backslash??? Il tuo IDE aggiunge i caratteri di escape in automatico??
In allegato l'eseguibile del codice C proposto, compilato con MinGW che carica un file di nome file.json, utile per fare i tuoi test, se tutto funziona vale la pena capire come vengono gestiti i caratteri di escape dal tuo IDE.
Purtroppo non ti so aiutare, con il C mi ci diletto, ma in C++ non ho mai realizzato nulla.
Però so che se copi e incolli il codice C nell'editor C++, deve funzioinare senza modifiche, a conferma ho aperto un progetto nuovo in C++ su CODE::BLOCKS e compilato con GCC in c++17 ISO C++ standard, il codice che ti ho proposto, e tutto ha funzionato senza modifiche.
Ho fatto convertire il mio codice in C in C++ da ChatGPT, ha funzionato al primo colpo, rispetto al tuo vedo una differenza sul while, per il resto è identico:
ho provato a scaricarlo carlo, ma purtroppo win 11 mi segnala qualsiasi cosa come virus annullando i download
penso mi converrà fare applicazione a parte.
Esempio una su console invisibile recuperandone l'output.
non c'è soluzione.
Anche perché sono sicuro che il codice sia da parte mia, che da parte tua sia corretto.
Quello che non capisco e perché ottengo questo problema.