Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    [C]non capisco xk....

    Il programma qui sotto dovrebbe prendere da input una stringa...copiare la stringa in un'altro array(questo lo fa con una funzione che usa i puntatori) e stampare l'array nuovo....
    CODICE:
    codice:
    #include <stdio.h>
    void cambia(char* primo,char* secondo){
         while(*primo){
                 *secondo = *primo;
                 primo++;
                 secondo++;
         }
         *secondo='\0';
    }
    int main(){
    char stringa1[50],stringa2[50];
    int x;
    for(x=0;stringa1[x-1]!= '\n';x++){
             scanf("%c",&stringa1[x]);
    }
    stringa1[x+1]='\0';
    cambia(stringa1,stringa2);
    for(x=0; stringa2[x]!='\0';x++){
             printf("%c",stringa2[x]);
    }
    scanf("%d");
    return 0;
    }
    il programma funziona ...solo che in alcuni casi nell'output sotto la stringa mi appare qualche simbolo strano...non capisco il perche'....

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    È assolutamente terribile questo programma (terribile come svolto). Comincia per dire a studiare la scanf, per esempio da qui: http://www.cplusplus.com/reference/cstdio/scanf/ (esempio al fondo della pagina).

  3. #3
    ho risolto grazie ....lo so che e' terribile ma l'esercizio era questo...usare quella funzione e usare i puntatori....

  4. #4
    cosa dovrei studiare esattamente? non ho usato nello scanf %s perche' altrimenti non leggeva gli spazi....

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Quel ciclo for con la scanf dentro è totalmente senza senso. Prova a metterci una printf dentro per vedere quante volte viene chiamato...

  6. #6
    viene richiamato tante volte quanti i caratteri immessi..e' giusto, cosa c'e' che non va?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    viene richiamato tante volte quanti i caratteri immessi..e' giusto,
    Ma neanche... aggiungi questa riga subito dopo la tua scanf o subito prima e poi vedi.
    printf("%d\n", x);

    Tu inserisci tutta la stringa in una volta... scusa adesso riguardo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Non ho mai visto fare una cosa del genere, comunque non va bene.
    Se inserisci una stringa superiore a 50 caratteri cosa succede?

    P.S.
    Tu volevi tentare di fare una getline... cioè di prendere una intera riga con gli spazi.
    Ma l'esercizio non mi pare punti a questo, semmai alla funzione cambia, sostituisci il for con:
    scanf("%50s", stringa1);

  9. #9
    l'esercizio era riuscire a farlo...ecco xk gli array sono di 50 elementi...potevano anche essere di 500..ma non cambiava....cmq ho aggiunto il printf nel ciclo e mi da' il giusto numero di caratteri...

  10. #10
    codice:
    #include <stdio.h>
    /*programma che copia e stampa un array...*/
    void cambia(char* primo,char* secondo){
         while(*primo){
                 *secondo = *primo;
                 primo++;
                 secondo++;
         }
         *secondo='\0';
         return;
    }
    int main(){
    char stringa1[50],stringa2[50];
    int x;
    for(x=0;stringa1[x-1]!= '\n';x++){
             scanf("%c",&stringa1[x]);
    }
    stringa1[x]='\0';
    cambia(stringa1,stringa2);
    for(x=0; stringa2[x]!='\0';x++){
             printf("%c",stringa2[x]);
    }
    scanf("%d");
    return 0;
    }
    cosi' e' giusto...funziona...magari e' un po' pasticciato ma io non avrei nemmeno usato i puntatori xD e avrei usato strcpy ahah xD pero' va bene dai

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.