Problema con stringhe in c

di Anonimizzato21939 il
18 risposte
Ciao,ho un problema con un programma in c facilissimo,

data una frase immessa da terminale (ad es. ciao come va) stampi la stessa frase in output, il problema è che la scanf della stringa si interrompe allo spazio dopo il ciao,sapreste dirmi come mettere tutto la frase all'interno della stringa?

18 Risposte

  • Ma neanche una ricerca con google vuoi fare?
  • oregon ha scritto:


    Ma neanche una ricerca con google vuoi fare?
    Ho cercato su google ma dice di usare il gets,il quale però non è sicuro dato che può creare problemi
  • oregon ha scritto:


    Ma neanche una ricerca con google vuoi fare?
    Se poi è cosi facile potresti scriverlo qua sotto al posto di lamentarti
  • Hai trovato quella indicazione sulla sicurezza della gets? Cerca cosa viene consigliato al suo posto.

    Mi "lamento" (come dici tu) perché non hai la voglia di fare una ricerca e chiedi la pappa pronta.
  • oregon ha scritto:


    Hai trovato quella indicazione sulla sicurezza della gets? Cerca cosa viene consigliato al suo posto.

    Mi "lamento" (come dici tu) perché non hai la voglia di fare una ricerca e chiedi la pappa pronta.
    Io sono libero di chiedere quello che voglio su un forum,se non ti va bene basta ignorarmi.
  • Sicuramente ... infatti ti ho risposto su cosa fare. Il forum serve a dare risposte. Non le risposte che pretendi tu però.
  • Dai un'occhiata alle caratteristiche della funzione fgets(), potrebbe fare al caso tuo.
  • AldoBaldo ha scritto:


    Dai un'occhiata alle caratteristiche della funzione fgets(), potrebbe fare al caso tuo.
    Innanzitutto grazie,però io sapevo che la funzione gets non è "sicura" perchè rischia di creare molti overflow,non esiste qualche funzione più sicura?
  • oregon ha scritto:


    Sicuramente ... infatti ti ho risposto su cosa fare. Il forum serve a dare risposte. Non le risposte che pretendi tu però.
    Dare consigli da ritardato non penso che sia una cosa da fare in questo forum...
  • Leggi bene i consigli. fgets é la stessa cosa di gets?
  • Leggi bene e cerca la documentazione di quello che ti viene suggerito. Studiala e vedi le differenze
  • 7iFF ha scritto:


    Innanzitutto grazie,però io sapevo che la funzione gets non è "sicura" perchè rischia di creare molti overflow,non esiste qualche funzione più sicura?
    fgets() è stata predisposta proprio avendo in mente la necessità di salvaguardarsi contro gli sfondamenti del buffer. Se guardi bene, fgets() appare come gets() ma ha quella "f" davanti, che fa riferimento all'uso di uno stream. Lo stream può rappresentare un file, ma anche lo stream stdin, che riguarda proprio i dati inseriti in console.

    Leggi qui, vedrai che ti si accende la lampadina: http://digilander.libero.it/uzappi/C/librerie/funzioni/fgets.html

    Occhio al modo in cui viene trattato il limite imposto da "size", perché se l'utente inserisce più di (size-1) caratteri il '\n' NON è in coda alla stringa che ricevi e nello stdin restano dei caratteri, per così dire, "pendenti" che potrebbero condizionare le tue successive interrogazioni allo stdin stesso. Ti conviene fare un po' di prove inserendo stringhe brevi su un piccolo buffer e osservare bene cosa succede usando un debugger, se no ti si spacca il cranio per niente e finisci per demoralizzarti.

    P.S. Stai frequentando una scuola? Quale? A che punto sei? Perché se hai quindici anni è un conto, se ne hai ventidue è un altro conto.
  • Puoi anche utilizzare una scanset
  • Puoi anche utilizzare una scanset
    Così ti complichi la vita! Se devi leggere una stringa usi fgets().
    Considerando poi che non si vuole utilizzare gets() perchè "non sicura": se ci si interroga sul significato di tale affermazione si capirà come la scanf() ha potenzialmente gli stessi problemi.
Devi accedere o registrarti per scrivere nel forum
18 risposte