Problème de type de données C++
Résolu
Bertrand Denecker
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Edwyn Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Edwyn Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de faire un programme qui saisit 4 lettres et affiche une chaîne concaténée qui agrège les codes ASCII des 4 lettres.
Ex : saisie de j, o, u, r et sortie de la chaîne unique 106 111 117 114
Voici un essai qui ne fonctionne pas à partir de la concaténation (tout se passe comme si ascii1, ... ascii4 contenaient des valeurs telles que 1 ou 2 ...)
// AL_cours_1_seq_2_exo_cours_09g.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char lettre1, lettre2, lettre3, lettre4;
char buffer[50];
string concat;
int ascii1, ascii2, ascii3, ascii4;
// lettre 1
cout << "Entrez la 1° lettre : ";
cin >> lettre1;
ascii1=sprintf(buffer,"%ld\n",lettre1);
printf("Le code ASCII vaut : %s\n",buffer,ascii1);
// lettre2
cout << "Entrez la 2° lettre : ";
cin >> lettre2;
ascii2=sprintf(buffer,"%ld\n",lettre2);
printf("Le code ASCII vaut : %s\n",buffer,ascii2);
// lettre 3
cout << "Entrez la 3° lettre : ";
cin >> lettre3;
ascii3=sprintf(buffer,"%ld\n",lettre3);
printf("Le code ASCII vaut : %s\n",buffer,ascii3);
// lettre 4
cout << "Entrez la 4° lettre : ";
cin >> lettre4;
ascii4=sprintf(buffer,"%ld\n",lettre4);
printf("Le code ASCII vaut : %s\n",buffer,ascii4);
// concaténation
concat=sprintf("%ls",ascii1+ascii2+ascii3+ascii4);
printf("La chaîne concaténée vaut : %s\n",buffer,concat);
getch();
return 0;
}
Merci de m'aider à corriger ce programme (testé sur Visual C++)
J'essaie de faire un programme qui saisit 4 lettres et affiche une chaîne concaténée qui agrège les codes ASCII des 4 lettres.
Ex : saisie de j, o, u, r et sortie de la chaîne unique 106 111 117 114
Voici un essai qui ne fonctionne pas à partir de la concaténation (tout se passe comme si ascii1, ... ascii4 contenaient des valeurs telles que 1 ou 2 ...)
// AL_cours_1_seq_2_exo_cours_09g.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char lettre1, lettre2, lettre3, lettre4;
char buffer[50];
string concat;
int ascii1, ascii2, ascii3, ascii4;
// lettre 1
cout << "Entrez la 1° lettre : ";
cin >> lettre1;
ascii1=sprintf(buffer,"%ld\n",lettre1);
printf("Le code ASCII vaut : %s\n",buffer,ascii1);
// lettre2
cout << "Entrez la 2° lettre : ";
cin >> lettre2;
ascii2=sprintf(buffer,"%ld\n",lettre2);
printf("Le code ASCII vaut : %s\n",buffer,ascii2);
// lettre 3
cout << "Entrez la 3° lettre : ";
cin >> lettre3;
ascii3=sprintf(buffer,"%ld\n",lettre3);
printf("Le code ASCII vaut : %s\n",buffer,ascii3);
// lettre 4
cout << "Entrez la 4° lettre : ";
cin >> lettre4;
ascii4=sprintf(buffer,"%ld\n",lettre4);
printf("Le code ASCII vaut : %s\n",buffer,ascii4);
// concaténation
concat=sprintf("%ls",ascii1+ascii2+ascii3+ascii4);
printf("La chaîne concaténée vaut : %s\n",buffer,concat);
getch();
return 0;
}
Merci de m'aider à corriger ce programme (testé sur Visual C++)
A voir également:
- Problème de type de données C++
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Clear type - Guide
- Trier des données excel - Guide
- Type de ram - Guide
7 réponses
Voici le message d'erreur que j'ai :
1>------ Début de la génération : Projet : AL_cours_1_seq_2_exo_cours_09g, Configuration : Debug Win32 ------
1>Compilation en cours...
1>AL_cours_1_seq_2_exo_cours_09g.cpp
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(21) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(26) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(31) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(36) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(40) : error C2664: 'sprintf' : impossible de convertir le paramètre 2 de 'int' en 'const char *'
1> La conversion d'un type intégral en type pointeur nécessite reinterpret_cast, un cast de style C ou un cast de style fonction
1>Le journal de génération a été enregistré à l'emplacement "file://f:\Mes_documents\Mes_documents_1\BTS_IG_Année_1\BTS_IG_1_Visual_Cpp\AL_cours_1_seq_2_exo_cours_09g\AL_cours_1_seq_2_exo_cours_09g\Debug\BuildLog.htm"
1>AL_cours_1_seq_2_exo_cours_09g - 1 erreur(s), 4 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
C'est indigeste
Sinon, par un cout << ascii1, j'obtenais un des premiers symboles ASCII (tel que coeur, carreau, ...)
Un grand merci pour la réponse !
1>------ Début de la génération : Projet : AL_cours_1_seq_2_exo_cours_09g, Configuration : Debug Win32 ------
1>Compilation en cours...
1>AL_cours_1_seq_2_exo_cours_09g.cpp
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(21) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(26) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(31) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(36) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : voir la déclaration de 'sprintf'
1>f:\mes_documents\mes_documents_1\bts_ig_année_1\bts_ig_1_visual_cpp\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g\al_cours_1_seq_2_exo_cours_09g.cpp(40) : error C2664: 'sprintf' : impossible de convertir le paramètre 2 de 'int' en 'const char *'
1> La conversion d'un type intégral en type pointeur nécessite reinterpret_cast, un cast de style C ou un cast de style fonction
1>Le journal de génération a été enregistré à l'emplacement "file://f:\Mes_documents\Mes_documents_1\BTS_IG_Année_1\BTS_IG_1_Visual_Cpp\AL_cours_1_seq_2_exo_cours_09g\AL_cours_1_seq_2_exo_cours_09g\Debug\BuildLog.htm"
1>AL_cours_1_seq_2_exo_cours_09g - 1 erreur(s), 4 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
C'est indigeste
Sinon, par un cout << ascii1, j'obtenais un des premiers symboles ASCII (tel que coeur, carreau, ...)
Un grand merci pour la réponse !
Bonjour,
Alors moi personnelement j'utiliserais les casts les flux.
Je veux dire cin >> char1
cout << static_cast<short>(char1)
Autant utiliser le C++ à fond plutôt que de retourner au C.
Cordialement
Avec L'informatique on sait toujours quand on commence... Mais jamais quand on termine !
Alors moi personnelement j'utiliserais les casts les flux.
Je veux dire cin >> char1
cout << static_cast<short>(char1)
Autant utiliser le C++ à fond plutôt que de retourner au C.
Cordialement
Avec L'informatique on sait toujours quand on commence... Mais jamais quand on termine !
cout << hex << ascii1; donne 4 (pour une valeur souhaitée de 106)
Merci à Edwyn - je testerai plus tard
Merci à Edwyn - je testerai plus tard
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char variable[4];
for(int i=0;i<4;i++)
{
cout << "saisir variable " << i << endl;
cin >> variable[i];
}
for(int i=0;i<4;i++)
cout << (int) variable[i] << " - ";
cout << endl;
cin >> variable[0];
return 0;
}
using namespace std;
int main(int argc, char *argv[])
{
char variable[4];
for(int i=0;i<4;i++)
{
cout << "saisir variable " << i << endl;
cin >> variable[i];
}
for(int i=0;i<4;i++)
cout << (int) variable[i] << " - ";
cout << endl;
cin >> variable[0];
return 0;
}