Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    83

    Auito!!!!Esperto di devc++ che risolva questo esercizio.

    Usando il prototipo int unisci_stringhe (char s1[] , char s2[] , char s3[]) scrivere un programma che acquisisca due stringhe contenenti varie parole separate da spazio.
    La funzione deve ricopiare nella stringa destinazione s3 la seconda parola di s1 e la terza si s2.
    la funzione restituisce come valore la lunghezza di s3.
    Il programma da me inserito(non funzionante ovviamente) è il seguente:
    #include <stdio.h>
    #include <stdlib.h>

    main(){
    int risultato=0;
    char p[30], q[30],k[30];
    int unisci_stringhe (char s1[] , char s2[] , char s3[]);

    printf("Inserisci prima stringa\n");
    scanf("%s", p);
    system("PAUSE");

    printf("Inserisci seconda stringa\n");
    scanf("%s", q);
    system("PAUSE");


    risultato= unisci_stringhe(p ,q , k);

    printf("%d\n",risultato);
    system("PAUSE");
    }


    int unisci_stringhe (char s1[] , char s2[] , char s3[]){
    int i=0, j=0;
    int p=0,k=0,z=0,l=0, lunghezza;
    int contas1=0 , contas2=0;

    while(s1[i]!='\0'){
    if(i>0){
    if(s1[i]==' ' && s1[i-1] !=' ')
    { contas1 ++;}
    if(contas1==1)
    {k=i+1; p=1;
    while(s1[i]!=' ' || s1[i]!='\0'){
    s3[p]=s1[i];
    k++;
    p++;

    }
    }
    }
    i++;
    }

    while(s2[j]!='\0'){
    if(j>0){
    if(s2[j]==' ' && s2[j-1] !=' ')
    {contas2 ++;}
    if(contas2==2)
    {z=j+1;
    while(s2[z]!=' ' || s2[z]!='\0'){
    s3[p]=s2[z];
    p++;
    z++;
    }
    }
    }j++;
    }


    s3[p+1]='\0';


    return p;


    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Rileggi il regolamento punto nº 6 per favore.

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non usare devcpp, è un progetto morto.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    scanf interrompe l'acquisizione della stringa non appena incontra uno spazio, pertanto non è idonea per il tuo utilizzo.
    Meglio usare fgets.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    83
    L'istruzione scanf quindi presenta sempre questo problema o solo nel mio particolare caso?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    83
    Sarà anche un progetto morto ma devo usare questo...

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Essio
    L'istruzione scanf quindi presenta sempre questo problema o solo nel mio particolare caso?
    Il fatto di non leggere gli spazi non è un problema della scanf, funziona così. A meno che non specifichi il contrario ovviamente. Dovrebbe essere una cosa del genere: scanf("%[a-zA-Z 0-9]", temp) ma non ne sono sicurissimo, non l'ho mai usata spesso questa caratteristica.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Originariamente inviato da Essio
    L'istruzione scanf quindi presenta sempre questo problema o solo nel mio particolare caso?
    sempre! scanf non acquisisce blank

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da google01
    sempre! scanf non acquisisce blank
    Ma non è un problema, è il comportamente di default della funzione scanf!

    Così la scanf legge anche gli spazi
    codice:
    #include <stdio.h>
    
    int main(int argc, char **argv) {
        char temp[30];
        
        printf("Insert a string: ");
        scanf("%[A-Za-z 0-9]", temp);
        
        printf("String: %s\n", temp);
        return 0;
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da Essio
    Auito!!!!Esperto di devc++ che risolva questo esercizio.
    Il titolo della discussione è del tutto inadeguato.

    Inoltre, qui non si fanno risoluzioni di esercizi su commissione, ma tutt'al più si tenta di farlo in modo autonomo e - in caso di difficoltà - si espongono i propri dubbi e ci si fa aiutare, senza delegare interamente la risoluzione del problema o dell'esercizio ad altri.

    Infine, il codice va pubblicato usando l'apposito tag [CODE] che consente di formattarlo.

    Vedi il Regolamento per queste ed altre norme.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.