BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
4 avril 2006 à 00:03
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007
-
4 sept. 2008 à 20:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 4 sept. 2008 à 20:09
Mon code remonte à longtemps, ça fait plaisir qui soit encore utile à qqun. Bon j'utilisais dev-Cpp à l'époque et j'avais ni d'erreur ni de warnings. Mais avec un autre compilateur je c'est pas comment il se comporte.
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 4 sept. 2008 à 04:49
simplification au maxi:
int To_utf8(char * val) {
int size = strlen(val);
wchar * caU = (wchar*)malloc(size+5);
int ret = iso8859ToUnicode(val,size,caU,size);
caU[ret] = '\0';
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 4 sept. 2008 à 04:09
13 erreurs, 384 warnings, qui dit mieux ^^
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 18 oct. 2007 à 21:11
Salut Ricoos,
Je crois que c'est juste quand même (Bon c'est possible que je persiste dans mon erreur...).
Lorsqu'on écrit une chaîne de caractère dans un éditeur C cela donne une chaîne en iso8859 (à moins que tu n'utilise un IDE sous DOS :P), et donc pour convertir de iso8859 à Unicode, j'utilise caSrc vers caU.
PS: Le Ascii etendue est pas la même chose que iso8859;
PS2: Le Ascii etendue c'est l'ASCII normale avec en plus les caractère de 128 à 255 (avec le 8ème bit utilisé)
ricoos
Messages postés1Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention18 octobre 2007 18 oct. 2007 à 18:05
excellent par sa simplicité
mais il y a un petit truc qui n'est pas logique dans l'exemple (par chance on trouve un bon resultat)
ligne 18
ret = iso8859ToUnicode(caSrc,iStrLen,caU,iStrLen);
on passe a la fonction comme 1er argument une chaine ASCII au lieu de passer la chaine Ascii etendue
corrigé ça fait ;
ret = iso8859ToUnicode(caEAscii,iStrLen,caU,iStrLen);
y a t'il un exemple pour utf8ToUnicode avec la taille en 4eme parametre (je ne peux que supposer c'est /3
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 1 déc. 2006 à 11:44
plutot que tous tes define, un petit énum et le tour est joué
excrt
Messages postés75Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention 3 juillet 2006 18 avril 2006 à 16:45
//
// 1) C++ ONLY
//
#pragma once // tu mets ca au tout début de tes fichiers .h, c'est tout
// contenue du fichier .h ...
pour le « wchar_t », non en effet, il est dispo en C et en C++.
C => <wchar.h>
C++ => <cwchar>
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 18 avril 2006 à 14:59
ouahhahh, doucement...
Bon il y a pas longtemps que j'essai de faire du C et non pas du C++, je connais pas beaucoup les différences entre C et C++.
Pour l'histoire des inclusions multiples il faut que je rajoute ceci:
#ifndef _CHARSET_H_
#define _CHARSET_H_
... le contenu actuelle ...
#endif
c'est juste ? je connais pas le #pragma once ça le même effet ?
En ce qui concerne le wchar_t, je croyais que c'était du C++ uniquement (bon apparement je me trompait, mais je suis pas le seul puisque j'ai lu ça sur un autre forum).
Merci :-) au moins j'ai appris qqch.
excrt
Messages postés75Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention 3 juillet 2006 13 avril 2006 à 20:16
J'oubliais, pour les wide-chars, il existe <wchar.h>, pas le peine de définir ton « wchar »
excrt
Messages postés75Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention 3 juillet 2006 13 avril 2006 à 20:12
Alcantornet, soit tu changes l'extension de tes fichiers .c en .cpp ou tu modifies tes options de compilations. En C, les variables doivent être déclarés en début de scope, pas en plein centre ...
C'est du C++ ton truc, pas du C. En passant, les « inclusions multiples » ca te dis quelque chose?
Puisque ton truc c'est du C++, utilise « #pragma once », sinon vas-y avec un « #ifndef xyz_h ... » ...
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 4 avril 2006 à 20:03
C'est une nouveauté de la norme C99: "Variable Length Arrays".
Taron31
Messages postés199Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention28 février 2008 4 avril 2006 à 11:49
En effet c'est étrange... normalement la taille d'n tableau doit être statique lors de la compilation :s
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 4 avril 2006 à 08:01
Je suis sous dev-cpp donc gcc
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 avril 2006 à 00:03
char caEAscii[iStrLen];
Quel compilo accepte cela ???
4 sept. 2008 à 20:09
4 sept. 2008 à 04:49
int To_utf8(char * val) {
int size = strlen(val);
wchar * caU = (wchar*)malloc(size+5);
int ret = iso8859ToUnicode(val,size,caU,size);
caU[ret] = '\0';
char * caUTF = (char*)malloc(size*4);
ret = unicodeToUtf8(caU,size,caUTF,size*4);
caUTF[ret] = '\0';
memset(val, '\0', size+5);
sprintf(val, "%s", caUTF);
return 0;
}
int To_iso8(char * val) {
int size = strlen(val);
wchar * caU = (wchar*)malloc(size+5);
int ret = utf8ToUnicode(val,size,caU,size);
caU[ret] = '\0';
memset(val, '\0', size+5);
ret = unicodeToIso8859(caU, ret, val, ret);
val[ret] = '\0';
return 0;
}
4 sept. 2008 à 04:09
18 oct. 2007 à 21:11
Je crois que c'est juste quand même (Bon c'est possible que je persiste dans mon erreur...).
Lorsqu'on écrit une chaîne de caractère dans un éditeur C cela donne une chaîne en iso8859 (à moins que tu n'utilise un IDE sous DOS :P), et donc pour convertir de iso8859 à Unicode, j'utilise caSrc vers caU.
PS: Le Ascii etendue est pas la même chose que iso8859;
PS2: Le Ascii etendue c'est l'ASCII normale avec en plus les caractère de 128 à 255 (avec le 8ème bit utilisé)
18 oct. 2007 à 18:05
mais il y a un petit truc qui n'est pas logique dans l'exemple (par chance on trouve un bon resultat)
ligne 18
ret = iso8859ToUnicode(caSrc,iStrLen,caU,iStrLen);
on passe a la fonction comme 1er argument une chaine ASCII au lieu de passer la chaine Ascii etendue
corrigé ça fait ;
ret = iso8859ToUnicode(caEAscii,iStrLen,caU,iStrLen);
y a t'il un exemple pour utf8ToUnicode avec la taille en 4eme parametre (je ne peux que supposer c'est /3
1 déc. 2006 à 11:44
18 avril 2006 à 16:45
// 1) C++ ONLY
//
#pragma once // tu mets ca au tout début de tes fichiers .h, c'est tout
// contenue du fichier .h ...
/*
* 2) C/C++
*/
#ifndef FILENAME_H
#define FILENAME_H
/* contenue du fichier .h ... */
#endif
pour le « wchar_t », non en effet, il est dispo en C et en C++.
C => <wchar.h>
C++ => <cwchar>
18 avril 2006 à 14:59
Bon il y a pas longtemps que j'essai de faire du C et non pas du C++, je connais pas beaucoup les différences entre C et C++.
Pour l'histoire des inclusions multiples il faut que je rajoute ceci:
#ifndef _CHARSET_H_
#define _CHARSET_H_
... le contenu actuelle ...
#endif
c'est juste ? je connais pas le #pragma once ça le même effet ?
En ce qui concerne le wchar_t, je croyais que c'était du C++ uniquement (bon apparement je me trompait, mais je suis pas le seul puisque j'ai lu ça sur un autre forum).
Merci :-) au moins j'ai appris qqch.
13 avril 2006 à 20:16
#include <wchar.h> /* wchar_t */
/*
* incluant wcslen()/wcscpy()/wcsncpy()/wcscat()/wcsncat()/wcscmp()/...
*/
type callconv function( [const ]wchar_t* string[, ...] );
13 avril 2006 à 20:12
C'est du C++ ton truc, pas du C. En passant, les « inclusions multiples » ca te dis quelque chose?
Puisque ton truc c'est du C++, utilise « #pragma once », sinon vas-y avec un « #ifndef xyz_h ... » ...
4 avril 2006 à 20:03
4 avril 2006 à 11:49
4 avril 2006 à 08:01
4 avril 2006 à 00:03
Quel compilo accepte cela ???