Les Allergies
Alimentaires
Posez votre question Signaler

Convertir un tableau char[] en char [Résolu]

alcOol 9Messages postés 6 mars 2008Date d'inscription - Dernière réponse le 10 avril 2008 à 09:16
Bonjour,
Voici mon problème j'aimerai convertir un tableau char[] en variable char. Est-ce possible si oui comment?
PS: Ce projet est a réalisé pour un cour (je dois le rendre le 15.04.2008) et j'y ai déjà consacré une demi journée afin d'essayer de faire cette conversion mais sans succès
Voici mon code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "ufmMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
AnsiString asNombre=0;
char asAlphabet=0;
char asAlphabet2=0;
FILE *canalFichier = NULL; //déclaration et initilisation d'un canal de communication.
AnsiString asMonHeure; //Création de la variable asMonHeure
TfmMain *fmMain;
//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::buEcrireClick(TObject *Sender)
{
asMonHeure=DateTimeToStr(Now()); //entrée de l'heure du système dans la variable asMonHeure
//Génération de l'alphabet en majuscules
char cAlphabet1[30]={0};
for(int index=0; index <26; index++)
{
cAlphabet1[index]=index+65;
}
asAlphabet=(cAlphabet1);
//Génération de l'alphabet en minuscules
char cAlphabet2[30]={0};
for(int index=0; index <26; index++)
{
cAlphabet2[index]=index+97;
}
asAlphabet2=(cAlphabet2);
//Génération des chiffres de 0 à 9
char cNombre[20]={0};
for(int index=0; index <10; index++)
{
cNombre[index]=index+48;
}
asNombre=StrToInt(cNombre);
canalFichier = fopen("alphabet.txt","w"); //ouverture du canal vers le fichier "bonjour".txt en mode écriture
fprintf(canalFichier,"Projet ALPHABET\nNom\tPrénom\t%s\n%s\n%s\n%s",asMonHeure ,asAlphabet, asAlphabet2, asNombre); //écriture du texte dans le fichier alphabet.txt
fclose(canalFichier); //Fermeture du canal
}
//---------------------------------------------------------------------------
Lire la suite 

Convertir un tableau char[] en char »

2 réponses
Réponse
+0
moins plus
Salut,
Ce que tu cherche à faire est impossible. En effet un char ne peut contenir qu'un seul caractère : c'est en fait un entier qui est égal code asciidu caractère. Un tableau de caractère (ou chaine de carctères) est un ensemble de char situés les uns a la suite des autres en mémoire.
Quand tu déclare un tableau de char, par exemple char tableau[10]; , la variable tableau contient l'adresse du premier caractère de la chaine. pour accéder à un caractère en particulier on écrit char[i], par exemple, pour accéder au ième caractère, ...;

Dans ton cas du doit donc déclarer asAlphabet comme une chaîne de caractères dans laquelle tu va stocker les lettres de l'alphabet :
char asAlphabet[30];
Tu remplie comme tu l'a fait les "cases" de cette chaîne
for(int index=0; index <26; index++)
{
asAlphabet[index]=index+65;
}

n'oublis pas de terminer par un \0 pour signaler la fin de la chaîne :
asAlphabet[26] = '\0';
et tu l'enregistre comme ceci
fprintf(canalFichier,"%s",asAlphabet);

De même pour tes autres alphabets.

Autre chose : tu ne dois pas convertir les nombres en int puisque c'est des caractères que tu veut enregistrer dans tonfichier!!!. Donc procède comme pour les lettres.

En espérant avoir pu t'aider

A+
alcOol- 10 avril 2008 à 09:16
Voila mon programe a été modifier, merci pour ton aide et voici le code à l'heure actuelle:

FILE *canalFichier = NULL; //déclaration et initilisation d'un canal de communication.

TfmMain *fmMain;
//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::buEcrireClick(TObject *Sender)
{
//Inscription du nom dans une variable
AnsiString asNom;
asNom = edNom->Text;

//Inscription du prénom dans une variable
AnsiString asPrenom;
asPrenom = edPrenom->Text;

//Stockage de l'heure du système dans une variable
AnsiString asMonHeure; //Création de la variable asMonHeure
asMonHeure=DateTimeToStr(Now());

//Génération de l'alphabet en majuscules
char cAlphabet[30]={0};
for(int index=0; index <26; index++)
{
cAlphabet[index]=index+65;
}

//Génération de l'alphabet en minuscules
char cAlphabet2[30]={0};
for(int index=0; index <26; index++)
{
cAlphabet2[index]=index+97;
}

//Génération des chiffres de 0 à 9
char cNombre[20]={0};
for(int index=0; index <10; index++)
{
cNombre[index]=index+48;
}

//Ecriture dans le fichier "alphabet.txt"
canalFichier = fopen("alphabet.txt","w"); //ouverture du canal vers le fichier "bonjour.txt" en mode écriture
fprintf(canalFichier,"Projet ALPHABET\n%s\t%s\t%s\n%s\n%s\n%s",asNom,asPrenom,asMonHeure ,cAlphabet, cAlphabet2, cNombre); //écriture du texte dans le fichier alphabet.txt

fclose(canalFichier); //Fermeture du canal
}
//---------------------------------------------------------------------------
Ajouter un commentaire
Ce document intitulé « convertir un tableau char[] en char » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?