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

    informazione malloc

    è da poco che ho iniziato imparare linguaggio c ho un problema che non riesco capire bene se io alloco memoria a una char come ho fatto nel mio esempio quando faccio partire il programma mi chiede di inserire il nome poi come out put non mi da nessun risultato cosa sbaglio grazie mille
    codice:
    char* name = (char *)malloc(21*sizeof(char));
        printf("\t\t\n****************** C LESSON MALLOC ******************\n");
        printf("\nenter your name ");
        scanf("%s",name);
        printf("name is %s ",name);
        printf("\n*********************************************************");
        return 0;
    shiviphpdevelopment

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    A me funziona correttamente se lo compilo e lo eseguo.
    Ma il codice è solo questo o lo hai copiato tu?
    Hai incluso la libreria stdlib.h?
    Ti da qualche errore in fase di compilazione?

  3. #3
    no non ho copiato niente....ho scritto io però se io alloco la memoria per una char di 21*sizeof(char) per esempio se io scrivo il mio nome completo shivi singh mangat dp spazio non mi il resto questo come posso risolvere devo usare fgets() però se uso fgets come secondo parametro mi chiede la lunghezza della stringa grazie mille
    shiviphpdevelopment

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da shivi_php
    no non ho copiato niente....ho scritto io però se io alloco la memoria per una char di 21*sizeof(char) per esempio se io scrivo il mio nome completo shivi singh mangat dp spazio non mi il resto questo come posso risolvere devo usare fgets() però se uso fgets come secondo parametro mi chiede la lunghezza della stringa grazie mille
    scanf() non accetta spazi, a meno che non cambi l'espressione (es.: "%[a-z A-Z]").
    Ti consiglio fgets. La lunghezza richiesta è la lunghezza MASSIMA della stringa. Se con malloc allochi 21 caratteri in fgets puoi mettere 25 (giusto per avere il "numero semi-tondo" )
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    la lunghezza è 21 dato che hai fatto 21*sizeof(char)
    In ogni caso alla fine manca un
    codice:
    free(name);
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    ok now work but if statement not work what happend
    codice:
    fgets(name,25,stdin);
            if(strlen(name) <= 3){
                printf("\nerror %s must at least 4 to 24 charecters ",name);
            }else{
                fputs(name,stdout);
            }
    shiviphpdevelopment

  7. #7

    Moderazione

    Benvenuto sul forum! Il linguaggio di riferimento va sempre specificato (anche nel titolo, sotto forma di "tag").

    Ora correggo io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define SIZE 30
    
    int main() {
      char *name = (char *)malloc(sizeof(char)*SIZE);
      fgets(name, SIZE, stdin);
      puts(name);
      free(name);
      return 0;
    }
    Comunque è un forum italiano quindi puoi scrivere in italiano e se scrivi in inglese puoi scrivere correttamente.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    si grazie mille okkk si perchè io sn iscritto su altri siti inglesi e x fare prima ho ho scritto velocemente scusate per casinò la prossima volta sarò più chiaro anche in inglese
    shiviphpdevelopment

  10. #10
    però la mia domanda era che quando controllo che se la lunghezza del nome è minore o uguale 3 caratteri mi deve dare un messaggio di errore però non funziona se io inserisco 2 caratteri mi da erroe però se inserisco 3 allora mi stampa il nome perchè ?
    codice:
    fgets(name,25,stdin);
            if(strlen(name) <= 3){
                fputs("name da 4 a 24 caratteri",stdout);
            }else{
                fputs(name,stdout);
            }
    shiviphpdevelopment

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.