Je souhaite écrire des phrases dans un fichier texte à l'aide de la fonction fwrite
. Donc, je dois avoir ces comme arguments de la fonction:Copie d'un tableau de caractères dans un fichier texte
fwrite(const void *restrict buffer, size_t size, size_t count, FILE *restrict stream)
-
tampon
- - pointeur vers le premier objet dans le tableau à écrire
- taille - taille de chaque objet
- nombre - le nombre de objets à écrire
- flux - pointeur vers le flux de sortie
Comme le How to dynamically allocate memory space for a string and get that string from user? dit, il est une mauvaise pratique à perdre Mémoire. J'ai lu la réponse et j'ai eu l'idée d'écrire un code à ma façon.
Mon idée est:
- pour faire un tableau de caractère et écrire à ses éléments
- faire ce tableau de plus en plus en utilisant
malloc
etrealloc
- L'écriture continue jusqu'à atteindre le
EOF
Malheureusement, je rencontre un problème. Chaque fois que je construire et exécuter le code, il me donne cette erreur:
has stopped working
Heres mon code:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
size_t index=0,size=1;
char ch;
FILE *fptr;
fptr=fopen("E:\\Textsample.txt","w");
/////////////////Checking///////////////
if(fptr==NULL)
{
free(fptr);
puts("Error occured!\n");
exit(EXIT_FAILURE);
}
/////////////////Checking///////////////
char *sentence =(char*) malloc(sizeof(char)) ;
puts("Plaese write :\n");
while((ch=getchar()) != EOF)
{
sentence[index]=ch;
index++;
size++;
realloc(sentence,size);
/////////////////Checking///////////////
if(sentence==NULL)
{
printf("Error Occured!\n");
free(sentence);
exit(EXIT_FAILURE);
}
/////////////////Checking///////////////
}
//Copying sentnce(s) to the text file.
fwrite(sentence,sizeof sentence[0],index,fptr);
free(sentence);
free(fptr);
return 0;
}
pinailler: Vous n'êtes pas obligé de libérer un ptr NULL dans le code Checking .. –
"a cessé de travailler"? Quelle? Peut-être exécuter dans un débogueur et voir sur quelle ligne il se bloque. –
@ HennoBrandsma- Que faire si elle ne parvient pas à réaffecter? –