Je vais lire plusieurs lignes de texte, donc je veux le garder dans une variable globale. Je l'ai fait une telle chose:Utiliser getline avec une variable globale
#include <stdbool.h>
#include <stdio.h>
static char currentLine[MAX_LINE_LENGTH];
static bool readNextLine(void)
{
return getline(¤tLine, NULL, stdin);
}
Une erreur que je reçois est
cc -Wno-unused-function -Wno-unused-variable -O2 -MD -MP -Wall -Werror -c src/parse.c -o build/parse.o
src/parse.c: In function ‘readNextLine’:
src/parse.c:14:20: error: passing argument 1 of ‘getline’ from incompatible pointer type [-Werror=incompatible-pointer-types]
return getline(¤tLine, NULL, stdin);
^
In file included from src/parse.c:2:0:
/usr/include/stdio.h:678:20: note: expected ‘char ** restrict’ but argument is of type ‘char (*)[100000]’
extern _IO_ssize_t getline (char **__restrict __lineptr,
Qu'est-ce que je fais mal?
homme getline: 'Si * lineptr est NULL, getline() allouera un tampon pour stocker la ligne, qui devrait être libéré par le programme utilisateur. (Dans ce cas, la valeur de * n est ignorée.) Alternativement, avant d'appeler getline(), * lineptr peut contenir un pointeur sur un buffer alloué de malloc (3) * n octets en taille. TL: DR: Vous pouvez Ne fais pas ça. – EOF
Passer un mauvais type à 'getline' c'est pourquoi vous obtenez une erreur. Un pointeur sur pointe et un pointeur sur tableau sont différents. – ameyCU