Ti sbagli ingMark, char *rubrica[max_nome] è già un vettore di stringhe! Quindi non è necessario che debba fare come hai scritto tu
per quanto riguarda l'ultimo problema il tappo ('
Postato originariamente da ingMark:
come penso tu ti sia accorto (dall'ultimo messaggio che hai scritto) non ti basta un vettore ma ti serve una matrice per memorizzare più stringhe :P
quindi avrebbe dovuto essere
rubrica[MAX_PERSONE][MAX_NOME]
Ti sbagli ingMark, char *rubrica[max_nome] è già un vettore di stringhe! Quindi non è necessario che debba fare come hai scritto tu
per quanto riguarda l'ultimo problema il tappo ('{parsed_message}') non hai bisogno di toglierlo tu, non viene stampato, indica solo al c che quella su cui stai lavorando è una stringa.
per quanto riguarda il \n è colpa della gets o fgets in quanto prendono tutta la riga new line compreso.
una possibile soluzione è una volta letta la tua stringa con la (f)gets contare la lunghezza della stringa (strlen) e partendo dal fondo finchè non è un carattere sostituire quello che trovi con '{parsed_message}'. in questo modo non avrai più il new line ed eventuali spazi alla fine della stringa.
altrimenti puoi direttamente leggere carattere per carattere fino a che non trovi il '\n' e poi mettere nella posizione in cui sei arrivato il '{parsed_message}'
Permettimi di correggerti se non erro, "è colpa della gets" questa affermazione è sbagliata anche perchè, la lettura della gets si ferma fino alla newline e quindi scrive correttamente la stringa, mentre la fgets no, include anche \n.
Però come hanno detto molti, è sconsigliato l'uso della gets ma bensì consigliato usare la fgets, in quanto evita problemi con buffer overflow. Una soluzione al problema, può essere quella di ingMark, oppure usi momentaneamente gets o ancora leggi carattere per carattere da tastiera (stdin) e anche da file usando la funzione fgetc/getc. Hai tante scelte ^^'
mi mette anche dei caratteri che non c'entrano niente
Cioè? quali sarebbero questi caratteri!?') non hai bisogno di toglierlo tu, non viene stampato, indica solo al c che quella su cui stai lavorando è una stringa.
per quanto riguarda il \n è colpa della gets o fgets in quanto prendono tutta la riga new line compreso.
una possibile soluzione è una volta letta la tua stringa con la (f)gets contare la lunghezza della stringa (strlen) e partendo dal fondo finchè non è un carattere sostituire quello che trovi con '
Postato originariamente da ingMark:
come penso tu ti sia accorto (dall'ultimo messaggio che hai scritto) non ti basta un vettore ma ti serve una matrice per memorizzare più stringhe :P
quindi avrebbe dovuto essere
rubrica[MAX_PERSONE][MAX_NOME]
Ti sbagli ingMark, char *rubrica[max_nome] è già un vettore di stringhe! Quindi non è necessario che debba fare come hai scritto tu
per quanto riguarda l'ultimo problema il tappo ('{parsed_message}') non hai bisogno di toglierlo tu, non viene stampato, indica solo al c che quella su cui stai lavorando è una stringa.
per quanto riguarda il \n è colpa della gets o fgets in quanto prendono tutta la riga new line compreso.
una possibile soluzione è una volta letta la tua stringa con la (f)gets contare la lunghezza della stringa (strlen) e partendo dal fondo finchè non è un carattere sostituire quello che trovi con '{parsed_message}'. in questo modo non avrai più il new line ed eventuali spazi alla fine della stringa.
altrimenti puoi direttamente leggere carattere per carattere fino a che non trovi il '\n' e poi mettere nella posizione in cui sei arrivato il '{parsed_message}'
Permettimi di correggerti se non erro, "è colpa della gets" questa affermazione è sbagliata anche perchè, la lettura della gets si ferma fino alla newline e quindi scrive correttamente la stringa, mentre la fgets no, include anche \n.
Però come hanno detto molti, è sconsigliato l'uso della gets ma bensì consigliato usare la fgets, in quanto evita problemi con buffer overflow. Una soluzione al problema, può essere quella di ingMark, oppure usi momentaneamente gets o ancora leggi carattere per carattere da tastiera (stdin) e anche da file usando la funzione fgetc/getc. Hai tante scelte ^^'
mi mette anche dei caratteri che non c'entrano niente
Cioè? quali sarebbero questi caratteri!?'. in questo modo non avrai più il new line ed eventuali spazi alla fine della stringa.
altrimenti puoi direttamente leggere carattere per carattere fino a che non trovi il '\n' e poi mettere nella posizione in cui sei arrivato il '
Postato originariamente da ingMark:
come penso tu ti sia accorto (dall'ultimo messaggio che hai scritto) non ti basta un vettore ma ti serve una matrice per memorizzare più stringhe :P
quindi avrebbe dovuto essere
rubrica[MAX_PERSONE][MAX_NOME]
Ti sbagli ingMark, char *rubrica[max_nome] è già un vettore di stringhe! Quindi non è necessario che debba fare come hai scritto tu
per quanto riguarda l'ultimo problema il tappo ('{parsed_message}') non hai bisogno di toglierlo tu, non viene stampato, indica solo al c che quella su cui stai lavorando è una stringa.
per quanto riguarda il \n è colpa della gets o fgets in quanto prendono tutta la riga new line compreso.
una possibile soluzione è una volta letta la tua stringa con la (f)gets contare la lunghezza della stringa (strlen) e partendo dal fondo finchè non è un carattere sostituire quello che trovi con '{parsed_message}'. in questo modo non avrai più il new line ed eventuali spazi alla fine della stringa.
altrimenti puoi direttamente leggere carattere per carattere fino a che non trovi il '\n' e poi mettere nella posizione in cui sei arrivato il '{parsed_message}'
Permettimi di correggerti se non erro, "è colpa della gets" questa affermazione è sbagliata anche perchè, la lettura della gets si ferma fino alla newline e quindi scrive correttamente la stringa, mentre la fgets no, include anche \n.
Però come hanno detto molti, è sconsigliato l'uso della gets ma bensì consigliato usare la fgets, in quanto evita problemi con buffer overflow. Una soluzione al problema, può essere quella di ingMark, oppure usi momentaneamente gets o ancora leggi carattere per carattere da tastiera (stdin) e anche da file usando la funzione fgetc/getc. Hai tante scelte ^^'
mi mette anche dei caratteri che non c'entrano niente
Cioè? quali sarebbero questi caratteri!?'
Permettimi di correggerti se non erro, "è colpa della gets" questa affermazione è sbagliata anche perchè, la lettura della gets si ferma fino alla newline e quindi scrive correttamente la stringa, mentre la fgets no, include anche \n.
Però come hanno detto molti, è sconsigliato l'uso della gets ma bensì consigliato usare la fgets, in quanto evita problemi con buffer overflow. Una soluzione al problema, può essere quella di ingMark, oppure usi momentaneamente gets o ancora leggi carattere per carattere da tastiera (stdin) e anche da file usando la funzione fgetc/getc. Hai tante scelte ^^'