Problema funzione getline C
Ciao a tutti, ho il seguente codice che acquisisce una stringa allocata dinamicamente tramite la funzione getline:
ma il compilatore mi da il seguente errore:
c:22:47: warning: incompatible pointer types passing 'int *' to parameter of type 'size_t *' (aka 'unsigned long *') [-Wincompatible-pointer-types]
numero_bytes_inseriti = getline(&stringa, &dimensione, stdin);
.................................................................^~~~~~~~~~~
/usr/include/stdio.h:442:56: note: passing argument to parameter here
ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restri...
............................................................................^
1 warning generated.
A cosa è dovuto?
P.S. ho messo i puntini in modo da evidenziare dove sta l'errore altrimenti con gli spazi non si capiva.
#include <stdio.h> #include <stdlib.h> int main() { char *stringa; int dimensione = 10, numero_bytes_inseriti; stringa = (char*) malloc(dimensione); printf("Inserire una stringa\n"); numero_bytes_inseriti = getline(&stringa, &dimensione, stdin); printf("Hai inserito la seguente stringa: %s\n", stringa); free(stringa); return 0; }
ma il compilatore mi da il seguente errore:
c:22:47: warning: incompatible pointer types passing 'int *' to parameter of type 'size_t *' (aka 'unsigned long *') [-Wincompatible-pointer-types]
numero_bytes_inseriti = getline(&stringa, &dimensione, stdin);
.................................................................^~~~~~~~~~~
/usr/include/stdio.h:442:56: note: passing argument to parameter here
ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restri...
............................................................................^
1 warning generated.
A cosa è dovuto?
P.S. ho messo i puntini in modo da evidenziare dove sta l'errore altrimenti con gli spazi non si capiva.
Risposte
Te lo dice il compilatore: dimensione deve essere un unsigned long o ancora meglio di tipo size_t.
Potresti farmi un esempio? Tipo se voglio che la stringa sia lunga 10 caratteri come dovrei fare?