Création d'un fichier avec C
Fermé
hamajemai
-
Modifié le 10 déc. 2018 à 10:03
hamajemai Messages postés 4 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 10 décembre 2018 - 10 déc. 2018 à 20:32
hamajemai Messages postés 4 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 10 décembre 2018 - 10 déc. 2018 à 20:32
A voir également:
- Création d'un fichier avec C
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
- Ouvrir un fichier .bin - Guide
2 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 10 déc. 2018 à 10:01
Modifié le 10 déc. 2018 à 10:01
Salut hamajemai,
Une chaîne, en C, est une suite de char terminés par le caractère
Donc, un tableau de char tel que
Si tu veux déclarer un tableau de chaînes de caractères, il te faut donc déclarer un tableau dont chaque indice permet d'accéder, non pas à un seul char, mais à un espace mémoire permettant de stocker les chaînes que tu veux y mettre.
Tu peux faire cela de deux façons : tu déclares un tableau à 2 dimensions de char, avec une 2ème dimension ajustée à la longueur maximale des chaînes + 1, ou tu déclares un tableau de pointeurs sur char pointant chacun sur un espace mémoire permettant d'y stocker chaque chaîne.
Dal
Une chaîne, en C, est une suite de char terminés par le caractère
'\0'.
Donc, un tableau de char tel que
char s[13];permet seulement de stocker une chaîne de 12 caractères au plus (12 plus
'\0'). Par exemple
char s[13] = "Bienveillant";. Si tu fais
s[2]sur un tel type, tu accèdes au 3ème caractère accessible sur cet espace mémoire, c'est tout.
Si tu veux déclarer un tableau de chaînes de caractères, il te faut donc déclarer un tableau dont chaque indice permet d'accéder, non pas à un seul char, mais à un espace mémoire permettant de stocker les chaînes que tu veux y mettre.
Tu peux faire cela de deux façons : tu déclares un tableau à 2 dimensions de char, avec une 2ème dimension ajustée à la longueur maximale des chaînes + 1, ou tu déclares un tableau de pointeurs sur char pointant chacun sur un espace mémoire permettant d'y stocker chaque chaîne.
Dal
Skynoze
Messages postés
344
Date d'inscription
dimanche 18 décembre 2016
Statut
Membre
Dernière intervention
12 février 2019
222
9 déc. 2018 à 13:54
9 déc. 2018 à 13:54
int main() {
// create a FILE typed pointer
FILE *file_pointer;
file_pointer = fopen("nom_du_fichier.txt", "w");
// Write to the file
fprintf(file_pointer, "Laisse vide si tu veut riens dedant ou du texte");
// Close the file
fclose(file_pointer);
return 0;
}
// create a FILE typed pointer
FILE *file_pointer;
file_pointer = fopen("nom_du_fichier.txt", "w");
// Write to the file
fprintf(file_pointer, "Laisse vide si tu veut riens dedant ou du texte");
// Close the file
fclose(file_pointer);
return 0;
}
hamajemai
Messages postés
4
Date d'inscription
dimanche 9 décembre 2018
Statut
Membre
Dernière intervention
10 décembre 2018
9 déc. 2018 à 14:03
9 déc. 2018 à 14:03
Merci, mais je fait exactement ça mais le fichier reste vide!!!
Skynoze
Messages postés
344
Date d'inscription
dimanche 18 décembre 2016
Statut
Membre
Dernière intervention
12 février 2019
222
9 déc. 2018 à 14:05
9 déc. 2018 à 14:05
Ah ! Tu utilise ftp pour héberger le fichier ?
hamajemai
Messages postés
4
Date d'inscription
dimanche 9 décembre 2018
Statut
Membre
Dernière intervention
10 décembre 2018
9 déc. 2018 à 14:07
9 déc. 2018 à 14:07
Excusez moi , je suis débutant en programmation, c'est quoi le ''ftp'' exactement
Skynoze
Messages postés
344
Date d'inscription
dimanche 18 décembre 2016
Statut
Membre
Dernière intervention
12 février 2019
222
9 déc. 2018 à 14:09
9 déc. 2018 à 14:09
Tu héberge ton "serveur" en local ou sur un serveur internet que tu a acheté ?
hamajemai
Messages postés
4
Date d'inscription
dimanche 9 décembre 2018
Statut
Membre
Dernière intervention
10 décembre 2018
9 déc. 2018 à 14:21
9 déc. 2018 à 14:21
Local
Modifié le 10 déc. 2018 à 14:06
Tu devras aussi corriger l'affectation de chaînes.
Tu ne peux pas faire d'affectation avec le signe en dehors de l'initialisation lors de la déclaration.
Pour affecter une chaîne à un tableau de char dans ton code après déclaration, il faut utiliser ou .
Par exemple :
http://www.cplusplus.com/reference/cstring/strncpy/
http://www.cplusplus.com/reference/cstring/strcpy/
En initialisant lors de la déclaration, c'est moins compliqué. Par exemple :
Pour la lecture du fichier, si tu utilises avec , ta lecture va s'arrêter au premier espace rencontré.
cf. http://www.cplusplus.com/reference/cstdio/fscanf/
s String of characters Any number of non-whitespace characters, stopping at the first whitespace character found. A terminating null character is automatically added at the end of the stored sequence.
Tu ne pourras donc pas lire efficacement une ligne comme de cette façon.
Si tu veux utiliser pour lire une ligne, dans la limite d'un certain nombre de caractères, il te faut un autre spécificateur. Dans ton cas par exemple : . Cela va lire 19 caractères au plus en prenant tous les caractères et en s'arrêtant au premier rencontré et en ajoutant le de fin. Note que fonctionne de la même façon. Du coup restera dans le flux et tu devras le consommer aussi. Au final, cela donnerait quelque chose comme :
(au lieu de ta boucle )
Alternativement, beaucoup de personnes préfèrent utiliser qui est conçue pour lire des lignes, et qui gère, en tant que paramètre, la limitation du nombre caractères à lire. Elle a ses propres difficultés, notamment le fait qu'elle lit aussi le de fin de ligne.
http://www.cplusplus.com/reference/cstdio/fgets/
Tu devrais aussi remettre à zéro ta mémoire entre l'écriture et la lecture, avec .
http://www.cplusplus.com/reference/cstring/memset/
Tu as toutes les infos pour corriger ton code.
Si tu n'arrives pas à corriger ton code avec ces indications, poste ton code avec tes corrections et décrit ton problème.
Comme indiqué en fin de ton message initial par le modérateur (qui a modifié ton post initial pour formater correctement ton code), lorsque tu postes ton code sur le forum, fais le entre balises de code. Comme cela :
<code c>
Ton code ici
</code>
(ou en cliquant sur le menu des balises de code)
Cela présentera le code sur le forum en préservant l'indentation, en numérotant les lignes et avec coloration syntaxique.
Dal
10 déc. 2018 à 20:32