Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538

    [C] - Problema molto strano con un ciclo for[

    codice:
    /* alloco la memoria necessaria */
    printf("Inserisci il numero di stringhe\n");
    scanf("%d",&j);
    i = (int *) malloc(sizeof(int) * j);
    
    /*riempio l'array */
    for(count=0; count < j; count++){
    	gets(buff);
    	*(i + count) = atoi(buff);
    }
    mettendo j = 3, ci si aspetterebbe che facesse tre cicli, invece ne fa solo 2. inserendo delle printf ho fatto dei controlli e ho notato che la prima iterazione la salta, non aspetta il mio input e passa direttamente alla seconda.

    Cosa può essere?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    prova a inizializzare buff
    memset(buff, 0x0, sizeof(buff))

  3. #3

    Re: [C] - Problema molto strano con un ciclo for[

    Originariamente inviato da buba88
    codice:
    /* alloco la memoria necessaria */
    printf("Inserisci il numero di stringhe\n");
    scanf("%d",&j);
    i = (int *) malloc(sizeof(int) * j);
    
    /*riempio l'array */
    for(count=0; count < j; count++){
    	gets(buff);
    	*(i + count) = atoi(buff);
    }
    mettendo j = 3, ci si aspetterebbe che facesse tre cicli, invece ne fa solo 2. inserendo delle printf ho fatto dei controlli e ho notato che la prima iterazione la salta, non aspetta il mio input e passa direttamente alla seconda.

    Cosa può essere?
    domanda..
    in che SO sei?linux?
    succede perche' l'invio della prima scanf resta in memoria,
    con scanf("%d%*c",&j);
    potresti risolvere, ma se sei in linux usa la libreria
    che trovi qui:
    http://forum.html.it/forum/showthrea...hreadid=655927

    che disabilita il buffer in input

  4. #4
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    con memset(buff, 0x0, sizeof(buff)) non funziona.

    x kentaromiura: ho provato come hai detto tu è funziona, mi potresti spiegare che problema dava la prima scanf e cosa significa la stringa %d%*c ?

    ciao grazie

  5. #5
    Originariamente inviato da buba88
    con memset(buff, 0x0, sizeof(buff)) non funziona.

    x kentaromiura: ho provato come hai detto tu è funziona, mi potresti spiegare che problema dava la prima scanf e cosa significa la stringa %d%*c ?

    ciao grazie
    il problema e' che la stringa di input e' :
    12\n
    il 12 veniva assorbito dal %d,che lo passava alla variabile associata, il \n restava nello standard input,
    quindi nel tuo primo ciclo assegnavi implicitamente \n alla prima stringa,
    aggiungendo un %c succhi via quel \n con
    %*c e' come %c ma non associa a nessuna variabile l'input(praticamente lo scarti)

  6. #6
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    ok sei stato molto preciso grazie mille!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.