Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    6

    Acquisire una stringa con SCANF

    Sarò breve :

    Con questo codice

    #include <stdio.h>

    char *string = "011101010";

    void main(void)
    {
    printf(string);
    printf(" %s! ",string);
    }

    ottengo una stringa con un certo cod. binario, ora come faccio ad usare una scanf in modo che il cod lo possa inserire l'utente e non sia per forza una costante?

    GRAZIE!

  2. #2
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    #include <stdio.h>

    int main(void)
    {
    char stringa[256];

    printf("Inserisci una stringa: ");
    scanf("%s",stringa);
    printf("\nHai inserito la stringa: %s\n",stringa);

    return 0;
    }

  3. #3
    se devi soltanto ACQUISIRE una stringa non ti consiglio di utilizzare la funzione scanf() in quanto occupa troppa memoria
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void main(){
        char stringa[20];
        int str;
        printf("Inserisci una stringa: "); 
        str=atoi(gets(stringa));
        printf("\nHai inserito la stringa: %s\n",stringa); 
    }
    ho utilizzato una variabile in più
    ma ti assicuro che così è molto più LEGGERO.

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    6
    GRazie per le risposte... sembra funzionare!
    senti un altra cosa: mi dici come assegnare a un puntatore l'indirizzo dell array contenente la stringa?

    Inoltre col devcpp se provo a far *ptr = '1' il prog si blocca all esecuzione dell ' operazione, perke? sbaglio qualcosa? o e il compilatore?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    13
    Non vorrei sbagliare, in teoria è così:

    char s[20], *s;

    s=&s; //si assegna l'indirizzo del primo elemento della stringa s
    //alla variabile puntatore *s

    Premetto che potrei aver fatto una figuraccia visto che è da 1 annetto che non tocco molto il C.

    Ciao.
    ICQ: 149764054

  6. #6
    prova così
    codice:
    #include<stdio.h>
    
    void main(){
        char stringa[25];
        char *ptr;
        ptr = stringa;
        printf("Inserisci una stringa: "); 
        scanf("%s",&ptr);
        printf("\nHai inserito la stringa: %s\n", &ptr); 
    }

  7. #7
    ...Sempre meglio non utilizzare SCANF()!!!
    codice:
    #include <stdio.h> 
    #include <stdlib.h>
    
    void main(){
        char stringa[25];
        int str;
        char *ptr;
        ptr = stringa;
        printf("Inserisci una stringa: "); 
        str=atoi(gets(ptr));
        printf("\nHai inserito la stringa: %s\n", ptr); 
    }

  8. #8
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    Ti da errore perchè quando utilizzi i puntatori devi allocare lo spazio di memoria.
    Quando dichiari un puntatore (*p per intenderci) dichiare solo un indirizzo, lo spazio lo devi allocare:

    la funzione malloc() è quella che ti interessa

    #include <stdio.h>
    #include <stdlib.h> // questa e' la libreria di malloc

    int main(void)
    {
    char *str;
    int n; // numero di caratteri da allocare

    str=(char *)malloc(n*sizeof(char));
    if (str==NULL)
    {
    printf("\nErrore allocazione!\n");
    exit(1);
    }

    printf("\nInserisci una stringa: ");
    scanf("%s",str);
    printf("\nHai inserito la stringa: %s\n");

    return 0;
    }

    P.S.
    Ho scritto scanf perchè era stato chiesto come utilizzare scanf, poi è normale che per le stringhe conviene usare fgtes e non gets (che non ècompatibile con tutte le piattaforme).
    Ciao!!!!:quote:

  9. #9
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    A proposito nella fretta dell'allocazione ho dimenticato di inizializzare la variabile "n" .....
    Bhè dopo la dichiarazione inizializzala, oppure la fai inserire all'utente prima della lettura e dell'allocazione della memoria per la stringa.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    6

    Thank u

    Merci!

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.