Convertir un tableau char[] en char

Résolu/Fermé
alcOol Messages postés 9 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 31 juillet 2008 - 9 avril 2008 à 15:43
alcOol Messages postés 9 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 31 juillet 2008 - 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
}
//---------------------------------------------------------------------------
A voir également:

1 réponse

damlegone32 Messages postés 74 Date d'inscription lundi 11 septembre 2006 Statut Membre Dernière intervention 31 mai 2011 29
9 avril 2008 à 20:14
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+
0
alcOol Messages postés 9 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 31 juillet 2008 2
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
}
//---------------------------------------------------------------------------
0