A voir également:
- Code C
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code blocks free - Télécharger - Langages
- Code windows 10 - Guide
6 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
660
12 févr. 2010 à 22:32
12 févr. 2010 à 22:32
tu déclares assez d'espace seulement pour un seul caractère à chaque fois dans toutes tes chaines.
Bonsoir,
Merci d'abord pour votre réponse.
Les déclarations sont faites pour lire les noms des bases et des tables. Je que le problème ne se constitue pas là !!? je crois que le problème est au niveau des \ (antislash).
Merci d'abord pour votre réponse.
Les déclarations sont faites pour lire les noms des bases et des tables. Je que le problème ne se constitue pas là !!? je crois que le problème est au niveau des \ (antislash).
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
660
12 févr. 2010 à 23:05
12 févr. 2010 à 23:05
Nom_fich = (char *)malloc(sizeof(char));
c'est un comme si tu faisais (statiquement)
char Nom_fich[1];
Il n'y a de place que pour un caractère. Donc lorsque tu fais
printf("\nEntrer le nom de la table num. %d\t", indice+1);
scanf("%s", Nom_fich);
ça pose un problème...
La même chose pour de nombreux endroits dans le code.
c'est un comme si tu faisais (statiquement)
char Nom_fich[1];
Il n'y a de place que pour un caractère. Donc lorsque tu fais
printf("\nEntrer le nom de la table num. %d\t", indice+1);
scanf("%s", Nom_fich);
ça pose un problème...
La même chose pour de nombreux endroits dans le code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon ça marche mais il reste un tout petit problème c'est au niveau de la boucle for précisément lors de la création des fichiers (tables). Le nom du fichier suivant est concaténé avec ceux précèdent. Il faut à chaque fois initialiser le pointeur Ma_base. Avez-vous une idée !?
Bonsoir,
Voila le code en intégrité comme ça ça marche très bien !!!?
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<direct.h>
#include<string.h>
void Creation_Dossier_Data()
{
mkdir("c:\\data\\");
}
char * Creation_Base_Donnees(char * Nom_base)
{
char *Ma_base, * char_tmp;
Ma_base = (char *)malloc(sizeof(char)*20);
char_tmp = (char *)malloc(sizeof(char)*20);
char_tmp = strcpy(char_tmp, "c:\\data\\");
Ma_base = strcat(char_tmp, Nom_base);
mkdir(Ma_base);
return ((char *)Ma_base);
}
void Creation_des_Tables(int Nbr_tables, char * Nom_base)
{
char Ma_base[20], Ma_base_tmp[20];
FILE * pt_fich;
char * Nom_fich;
char * Ma_table;
int indice;
Ma_table = (char *)malloc(sizeof(char)*20);
Nom_fich = (char *)malloc(sizeof(char)*20);
pt_fich = (FILE *)malloc(sizeof(FILE)*5);
strcpy(Ma_base, Nom_base);
strcat(Ma_base, "\\");
strcpy(Ma_base_tmp, Ma_base);
for(indice = 0; indice < Nbr_tables; indice++)
{
printf("\nEntrer le nom de la table num. %d\t", indice+1);
scanf("%s", Nom_fich);
Ma_table = strcat(Ma_base_tmp, Nom_fich);
pt_fich = fopen(Ma_table, "w");
strcpy(Ma_base_tmp, Ma_base);
fclose(pt_fich);
}
}
main()
{
char * Ma_base;
int nbr;
Ma_base = (char *)malloc(sizeof(char)*20);
Creation_Dossier_Data();
printf("\nEntrer le nom de votre base de donnees:\t");
scanf("%s", Ma_base);
Ma_base = Creation_Base_Donnees(Ma_base);
printf("\nEntrer le nombre des tables de votre base de donnees:\t");
scanf("%d", &nbr);
Creation_des_Tables(nbr, Ma_base);
getch();
return 0;
}
Voila le code en intégrité comme ça ça marche très bien !!!?
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<direct.h>
#include<string.h>
void Creation_Dossier_Data()
{
mkdir("c:\\data\\");
}
char * Creation_Base_Donnees(char * Nom_base)
{
char *Ma_base, * char_tmp;
Ma_base = (char *)malloc(sizeof(char)*20);
char_tmp = (char *)malloc(sizeof(char)*20);
char_tmp = strcpy(char_tmp, "c:\\data\\");
Ma_base = strcat(char_tmp, Nom_base);
mkdir(Ma_base);
return ((char *)Ma_base);
}
void Creation_des_Tables(int Nbr_tables, char * Nom_base)
{
char Ma_base[20], Ma_base_tmp[20];
FILE * pt_fich;
char * Nom_fich;
char * Ma_table;
int indice;
Ma_table = (char *)malloc(sizeof(char)*20);
Nom_fich = (char *)malloc(sizeof(char)*20);
pt_fich = (FILE *)malloc(sizeof(FILE)*5);
strcpy(Ma_base, Nom_base);
strcat(Ma_base, "\\");
strcpy(Ma_base_tmp, Ma_base);
for(indice = 0; indice < Nbr_tables; indice++)
{
printf("\nEntrer le nom de la table num. %d\t", indice+1);
scanf("%s", Nom_fich);
Ma_table = strcat(Ma_base_tmp, Nom_fich);
pt_fich = fopen(Ma_table, "w");
strcpy(Ma_base_tmp, Ma_base);
fclose(pt_fich);
}
}
main()
{
char * Ma_base;
int nbr;
Ma_base = (char *)malloc(sizeof(char)*20);
Creation_Dossier_Data();
printf("\nEntrer le nom de votre base de donnees:\t");
scanf("%s", Ma_base);
Ma_base = Creation_Base_Donnees(Ma_base);
printf("\nEntrer le nombre des tables de votre base de donnees:\t");
scanf("%d", &nbr);
Creation_des_Tables(nbr, Ma_base);
getch();
return 0;
}