Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56

    [c]stringhe terminatori e spazi

    facendo leggere da tastiera una stringa ho notato che se inserisco spazi
    es
    c-i-a-o-[spazio]-c-a-n-e-\0
    stampando a schermo ho solo "ciao"
    ma,lo spazio è un terminatore, non credo
    ps l'arrey char contiene 100 elementi
    Come posso fargli leggere un testo e farlo stampare spazi compresi?
    in sostanza non ho capito come viene interpretato lo spazio?perchè mi stampa fino a spazio escluso come se fosse un terminatore?

  2. #2
    Usa la fgets

    codice:
    #include <stdio.h>
    
    int main()
    {
    	char string[64];
    	fgets(string, 64, stdin);
    	printf("%s\n", string);
    }
    Comunque si, a secondo della funzione lo spazio può essere un terminatore.


  3. #3
    Più che un terminatore un delimitatore. La stampa normalmente avviene sempre fino al terminatore (ossia il carattere NUL finale della stringa), è l'acquisizione che, a seconda della funzione e di come è richiamata, può fermarsi al primo delimitatore (di solito spazio, tab, ...) incontrato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Originariamente inviato da MItaly
    Più che un terminatore un delimitatore.
    Esatto, scusate l'imprecisione


  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    Ti ricordo che, usando fgets, viene preso anche l'invio ( quindi '\n') come carattere. Infatti, se tu sviluppi programmi in console, per inserire una stringa la scrivi e premi invio per confermare.

    Piccolo esempio, se come input dai la stringa "albero":

    - Con scanf ottieni "[a][l][b][e][r][o][\0]"
    - Con fgets ottieni "[a][l][b][e][r][o][\n][\0]"

    Quindi attenzione alla lunghezza che imposti per l'array dove contenere la stringa (se vuoi che il tuo array possa contenere una stringa di massimo 10 caratteri, dovrai dichiarare un array di dimensioni di almeno 10+2).
    E quando stamperai questa stringa acquisita con fgets, ci sarà un ritorno a capo in automaico.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    fgets
    grazie mille Kej, antotan,MItaly ora approfondisco

  7. #7
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.