Trasformare una stringa

di il
102 risposte

Trasformare una stringa

Buongiorno, qualcuno mi può aiutare per visualizzare la stringa s in questo programma:

#include <stdio.h>
#include <string.h>
void escape(char s[], char t[]);//copia la stringa t in s

void main()
{
	char t[10], s[20];
	escape(s, t);
	printf("%s", s);
}
void escape(char s[], char t[])
{
	int i, c;
	for (i = 0; i < strlen(s) && (t[i] = getchar()) != EOF; ++i)
	{
		switch (t[i])
		{
		case '\n': t[i] = "\\n";
			break;

		case '\t': t[i] = "\\t";
			break;
		default: s[i] = t[i];
			break;
		}
	}
}

102 Risposte

  • Re: Trasformare una stringa

    Domanda: che differenza c'è tra un array di char e una stringa?
  • Re: Trasformare una stringa

    Un array si scrive tra le graffe a caratteri singoli tra singoli apici mentre una stringa è un' insieme di caratteri tra doppie virgolette ma non credo che ci sia molta differenza
  • Re: Trasformare una stringa

    Come fai a dichiarare una stringa in C ?
  • Re: Trasformare una stringa

    Char s[10]; per esempio
  • Re: Trasformare una stringa

    S[]={'c', 'i', 'a', 'o', '\0'}-->stringa di caratteri
    s[]={'c', 'i', 'a', 'o'}-->array di caratteri
    Ho dimenticato che la stringa è un array con il terminatore '\0'
  • Re: Trasformare una stringa

    SuperManPC ha scritto:


    S[]={'c', 'i', 'a', 'o', '\0'}-->stringa di caratteri
    s[]={'c', 'i', 'a', 'o'}-->array di caratteri
    Ho dimenticato che la stringa è un array con il terminatore '\0'
    Allora, poichè abbiamo capito che una stringa non è altro che un array con un carattere per ogni indice e avente come ultimo indice \0, secondo te come si può stampare?
  • Re: Trasformare una stringa

    Si può stampare con un ciclo
  • Re: Trasformare una stringa

    Non così però vero ?
    
    #include <stdio.h>
    #include <string.h>
    void escape(char s[], char t[]);//copia la stringa t in s
    
    void main()
    {
    	int i;
    	char t[10], s[20];
    	escape(s, t);
    	for (i = 0; i < strlen(s); ++i)
    		printf("%c", s[i]);
    }
    void escape(char s[], char t[])
    {
    	int i, c;
    	for (i = 0; i < strlen(s) && (t[i] = getchar()) != EOF; ++i)
    	{
    		switch (t[i])
    		{
    		case '\n': t[i] = "\\n";
    			break;
    
    		case '\t': t[i] = "\\t";
    			break;
    		default: s[i] = t[i];
    			break;
    		}
    	}
    }
    
  • Re: Trasformare una stringa

    SuperManPC ha scritto:


    Ho dimenticato che la stringa è un array con il terminatore '\0'

    Nippolo ha scritto:


    Domanda: che differenza c'è tra un array di char e una stringa?
    Altra domanda: quanto vale strlen(s) nella prima iterazione del ciclo for?

    Inoltre precisamente cosa dovrebbe fare questa funzione escape()?
  • Re: Trasformare una stringa

    1 strlen vale la lunghezza della stringa s
    2 escape copia t in s sostituendo \n al newline e \t ad ogni tabulazione
  • Re: Trasformare una stringa

    SuperManPC ha scritto:


    1 strlen vale la lunghezza della stringa s
    2 escape copia t in s sostituendo \n al newline e \t ad ogni tabulazione
    strlen ritorna la lunghezza di una stringa valida, ossia terminata da 0 (o '\0'). Poiché devi copiare t in s, non è richiesto che s sia una stringa valida (e non lo è infatti) perciò strlen(s) non ha alcun senso.

    Inoltre non capisco che centri getchar con una strcpy modificata…
  • Re: Trasformare una stringa

    SuperManPC ha scritto:


    Si può stampare con un ciclo
    Esatto, poi cosa vuoi fare con quel codice sinceramente non l'ho capito!
  • Re: Trasformare una stringa

    Non so cosa sia strcpy
  • Re: Trasformare una stringa

    orion99 ha scritto:


    SuperManPC ha scritto:


    Si può stampare con un ciclo
    Esatto, poi cosa vuoi fare con quel codice sinceramente non l'ho capito!
    Si ma io non ci riesco, puoi farmi vedere come si stampa con un ciclo?
Devi accedere o registrarti per scrivere nel forum
102 risposte