2017-05-12 1 views
-2

J'utilise cette fonction de C pour lire une entrée utilisateur (stdin) avec la fonction getLine(). Cette fonction renvoie un caractère * avec l'entrée de l'utilisateur. C'est le segment:Erreur lors de l'utilisation de getLine() en C pour lire stdin

char * rline(void) 
{ 

char *line; 
size_t buff = 0; 
char * getLine(&line, &buff, stdin); 
return line; 

} 

Cependant, lors de son exécution, cette erreur est affichée et ne se compile pas. J'ai regardé autour de moi mais je n'arrive pas à comprendre pourquoi cela se produit, ma syntaxe est-elle correcte ou est-ce une erreur logique?

+0

Il suffit de lire comment utiliser une fonction dans C: https://www.programiz.com/c-programming/c-functions – Abend

+0

@Abend merci, mais je suis familier avec les fonctions d'appel, comment pensez-vous que j'ai l'intention de appeler celui-ci? –

+0

@DavidBowling Je n'utilise pas POSIX, mais merci. J'ai essayé à la fois getline() et getLine() mais les deux retournent la même erreur: référence non définie. –

Répondre

0

Vous appelez cette fonction incorrecte. Le char * n'a rien à faire là avant votre appel de fonction, il est seulement nécessaire dans la déclaration de la fonction.

Exemple d'une déclaration de bon fonctionnement:

char * getLine(char *, int, int); 

Exemple d'un appel de fonction appropriée:

getLine(&line, &buff, stdin); 

D'ailleurs, je pense que la taille de la mémoire tampon est à vous de choisir, en programmant une valeur au deuxième paramètre.

+0

Merci quand je déclare la fonction dans mon en-tête (et si je ne le fais pas), puis que j'essaie de l'appeler, cela me donne une erreur "référence non définie à getLine()", pourquoi est-ce ainsi? –

+0

@JohnStawket il n'y a pas de fonction standard appelée 'getLine' –

+0

@ErikW N'est-ce pas? [Ceci est la page de manuel de getline (3), incluse dans ] (https://linux.die.net/man/3/getline). J'ai essayé à la fois getline() et getLine() mais les deux donnent la même erreur: référence non définie. –