Trasformare una stringa

di Anonimizzato28411 il
102 risposte
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

  • Domanda: che differenza c'è tra un array di char e 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
  • Come fai a dichiarare una stringa in C ?
  • Char s[10]; per esempio
  • 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'
  • 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?
  • Si può stampare con un ciclo
  • 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;
    		}
    	}
    }
    
  • 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()?
  • 1 strlen vale la lunghezza della stringa s
    2 escape copia t in s sostituendo \n al newline e \t ad ogni tabulazione
  • 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…
  • SuperManPC ha scritto:


    Si può stampare con un ciclo
    Esatto, poi cosa vuoi fare con quel codice sinceramente non l'ho capito!
  • Non so cosa sia strcpy
  • 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