Inserimento stringa nulla C

di il
3 risposte

Inserimento stringa nulla C

Ciao a tutti/e!! ho una domanda da fare.. mi è stato assegnato per casa un semplice programmino in C (da svolgere senza l'ausilio di librerie strane, solo ctype e stdio ) del quale vi posto la consegna e il codice da me scritto:
Implementare la funzione int estremi(char* a, char* b, char*c), che ritorna 1 se la stringa a inizia con
la stringa b e termina con la stringa c, 0 altrimenti.
Casi particolari:
Se b e' una stringa di lunghezza nulla, la condizione per cui a inizia con b e' sempre vericata. Se c e' una
stringa di lunghezza nulla, la condizione per cui a termina con c e' sempre vericata.
Se a e' una stringa di lunghezza nulla, la funzione ritorna 1 se e solo se b e c hanno a loro volta lunghezza nulla.

#include<stdio.h>
#include<ctype.h>
#define MAX 250

int len(char *s)
{
    int t=0;

    while (s[t]!='\0')
        t++;

    return t;
}

int main()
{
    char a[MAX], b[MAX], c[MAX];

    printf("inserisci la prima stringa:\n");
    scanf("%s", a);

    printf("inserisci la seconda stringa:\n");
    scanf("%s", b);

    printf("inserisci la terza stringa:\n");
    scanf("%s", c);

    printf("la funzione ritorna %d\n", estremi(a,b,c));

    return 0;
}

int estremi(char *a,char *b,char *c)
{
    int i, j;


    if (c==NULL)
        {
        if(a==NULL && b==NULL)
                return 1;
        }

    if (c==NULL && b==NULL && a!=NULL)
            return 1;

    for (i=0;i<len(b);i++)
        {
            if (a[i]!=b[i])
                return 0;
        }

    for (j=0;j<len(c);j++)
        {
            if (a[len(a)-len(c)+j]!=c[j])
                return 0;
        }
return 1;
}
vi prego di non ridere per la banalità dell'esercizio.. tuttavia mi sono posto il problema di come mettere in input una stringa nulla, visto che dando semplicemente invio mi si abbassa la linea di immissione di una riga (strano direte!?!?).
Giusto per dare qualche info (magari vi torna utile) uso CODEBLOCK e come compilatore ho impostato GNU GCC compliler..

Grazie a tutti!!

3 Risposte

  • Re: Inserimento stringa nulla C

    Puoi fare una cosa. Per gestione interna se uno ti mette il numero 0 allora non vai ad assegnare niente. una cosa del tipo
    
    printf("inserisci la prima stringa (0 per stringa vuota):\n");
        scanf("%s", a);
    if(a[0] == '0' && len(a) == 1)
       a[0] = '\0'; //svuoti la stringa 
    
  • Re: Inserimento stringa nulla C

    Grazie mille!! questo metodo mi servirà sicuramente.. ne approfitto però per chiedere una cosa.. e se come stringa volessi scrivere una frase del tipo stringa a= "oggi c'è brutto tempo" come dovrei fare?

    se devo creare un nuovo post non c'è problema! fatemi sapere.. grazie grazie ancora!!
  • Re: Inserimento stringa nulla C

    Usare fgets invece che scanf.
Devi accedere o registrarti per scrivere nel forum
3 risposte