Fonction pour lire une phrase à partir d’une entrée utilisateur

J’essaie de lire une phrase du problème d’entrée d’utilisateur avec ma fonction si elle saute une seconde tentative lorsque j’essaie de l’appeler. Toute solution?

void readSsortingng(char *array, char * prompt, int size) { printf("%s", prompt); char c; int count=0; char * send = array; while ((c = getchar()) != '\n') { send[count] = c; count++; if (size < count){ free(array); break; } //lets u reserve the last index for '\0' } } 

Voici comment essayer de l’appeler:

 char obligation[1500]; char dodatno[1500]; readSsortingng(obligation, "Enter obligation", 1500); readSsortingng(dodatno, "Enter hours", 1500); 

Voici un exemple d’entrées: “Ceci est une phrase”

si tard je wana faire ceci:

 printf(" %s | %s \n",obligation, dodatno); 

et obtenir:

Ceci est une phrase | Ceci est une autre phrase

Voilà 🙂

 void readSsortingng(char *array, char * prompt, int size) { printf("%s", prompt); int c; int count=0; while((c = getchar()) != '\n' && c != EOF); while ((c = getchar()) != '\n') { array[count] = c; count++; if (count == (size - 1)) { break; } } array[count] = '\0'; } 

Dans votre fonction readSsortingng() ,

  1. array n’est pas alloué de façon dynamic à la mémoire, par malloc() ou par famille.

    L’appel de free() avec un pointeur dans la mémoire non allouée crée dynamicment un comportement indéfini.

  2. getchar() retourne un int . Vous devriez changer le type de c en int c .

  3. De même, votre entrée dans readSsortingng() aucune fin nulle, vous ne pouvez donc pas utiliser directement les tableaux en tant que chaîne . Vous devez vous-même mettre à zéro les tableaux, utilisés comme tampon de lecture pour pouvoir être utilisés ultérieurement comme chaîne.