Je veux créer ma propre version de la fonction fgets()
. J'ai essayé de le faire mais j'ai eu quelques problèmes. S'il vous plaît laissez-moi savoir où je me trompe.Ecrire ma propre version de 'fgets()' dans C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *my_fgets(char my_string[], int bytes, const char *filename) {
int i = 0;
FILE *fp;
if ((fp = fopen(filename, "wb")) == NULL) {
fprintf(stderr,"Couldn't open the file");
return NULL;
}
while (sizeof(my_string) < bytes || my_string[i] != '\n')
my_string[i++] = getc(fp);
my_string[i] = '\0'; //adding NULL character at the end
/* using pointers
char *p;
for (p = array; p < array + bytes; p++)
*p = getc(fp);
*p = '\0'; */
fclose(fp);
return my_string;
}
int main() {
char my_string[15];
int n;
char *p;
p = my_fgets(my_string, sizeof(my_string), stdin);
printf("\n%s", my_string);
printf("\n%s", p);
return 0;
}
Ma sortie n'est pas en cours d'exécution, elle se bloque immédiatement. Toute aide serait appréciée.
standard 'fgets()' ne pas ouvrir un fichier; à moins que vous n'ayez reçu des restrictions d'un tuteur, le vôtre ne devrait pas l'être non plus. –
Notez que la boucle avec 'while (sizeof (my_string)
Je vais éditer cette partie et mettre 'strlen' à la place. merci – tadm123