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

    [C] Problemi e chiarimenti

    salve a tutti,

    questo è il testo del problema:

    codice:
    /* Scriver un programma per la conversione in maiuscolo di una
     * stringa introdotta da tastiera usando una funzione che converta
     * il carattere, se minuscolo.
     * Il programma deve leggere e trattare la stringa un 
     * carattere alla volta, tenendo conto che la stringa
     * sara' terminata da un carattere '\n'
     */
    e fino qui ci siamo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    #define MAX_STRINGA 100
    
    char *maiuscolo(void);
    char normale[MAX_STRINGA],maiusc_normale[MAX_STRINGA];
    
    int i;
    
    main()
    {
        printf("scrivi cio' che vuoi; per terminare b-slash n:\n\n");
        scanf("%s",normale);
        printf("\n\n%s\n\n\n",maiuscolo());
        system("pause");
    }
    
    char *maiuscolo(void)
    {
        for(i=0;i<strlen(normale);i++)
        {
                if(islower(normale[i]))
                    maiusc_normale[i]=toupper(normale[i]);
                else
                    maiusc_normale[i]=normale[i];
        }
        
        return (maiusc_normale);
    }
    Ora per voi ho due domande:

    1- Come faccio a far terminare il programma con il comando \n??
    2- Finita di creare la funzione che controlla i caratteri all'inizio non avevo messo il puntatore davanti alla funzione e non mi andava poi per caso sono riuscito a trovare sto errore ma non ho capito come mai ci va il puntatore davanti alla funzione??

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Non ho capito nessuna delle due domande ...

    Non so perche' hai indicato che bisogna terminare con il tasto b-slash ... mi sembra che l'esercizio indichi solamente il tasto 'return' ...

    E il codice funziona ...

    Non capisco proprio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    nel testo del problema c'è scritto questo:

    tenendo conto che la stringa
    sara' terminata da un carattere '\n'


    come faccio a far terminare la stringa con un \n?? cosa vuol dire??




    la seconda domanda mi sembra chiara, chiedo cosa serve mettere il puntatore davanti alla funzione... è stato un caso fortuito averlo messo... ma non ho capito qundo si devono mettere i puntatori...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Ov3rLo4d
    nel testo del problema c'è scritto questo:

    tenendo conto che la stringa
    sara' terminata da un carattere '\n'


    come faccio a far terminare la stringa con un \n?? cosa vuol dire??
    \n è il carattere RETURN (o INVIO, che dir si voglia).
    \t è il carattere TAB
    \r è il ritorno carrello

    Il backslash serve ad effettuare il "quoting" del carattere... e quelli che ho elencato io sono dei "quoting" particolari, perchè rappresentano dei caratteri speciali (non stampabili, oltretutto)...
    la seconda domanda mi sembra chiara, chiedo cosa serve mettere il puntatore davanti alla funzione... è stato un caso fortuito averlo messo... ma non ho capito qundo si devono mettere i puntatori...
    La tua funzione deve restituire una stringa... che cos'è una stringa in C? Risposta: un array di caratteri... e come si rappresentano gli array di caratteri? Risposta: tramite un puntatore a carattere...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Grazie... penso di aver capito già qualcosa in più

  6. #6
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67
    Con il termine `terminare il programma con '\n'' intendi premendo invio?
    se si basta che sostituisci
    codice:
    system("pause");
    con:
    codice:
    /* Linux converte CR in NL */
    /* Windows ? */
    do {
        i = getchar();
    } while(i != 0x0a && i != 0x0d);
    /* 0x0a corrisponde al valore ascii del carattere `\n'
     * 0x0d corrisponde al valore ascii del carattere '\r' */
    Una cosa se mi posso permettere:
    codice:
    #define MAX_STRINGA 100
    char normale[MAX_STRINGA];
    ...
    int main(int argc, char **argv)
    {
        ... 
        scanf("%s",normale);
        ...
    }
    Cosa succede se immetto una stringa piu lunga di cento caratteri? segmentation fault!
    usa
    codice:
    fgets(normale, sizeof(normale) - 1, stdin);
    al posto
    di scanf per risolvere il problema.

  7. #7
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Ciao, potresti anche includere nel programma la libreria iostream:

    codice:
    #include <iostream>
    e invece di utilizzare:

    codice:
    scanf("%s",normale);
    usare questo:

    codice:
    std::cin.get(normale, MAX_STRINGA);

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da sotoli
    Ciao, potresti anche includere nel programma la libreria iostream:

    codice:
    #include <iostream>
    e invece di utilizzare:

    codice:
    scanf("%s",normale);
    usare questo:

    codice:
    std::cin.get(normale, MAX_STRINGA);
    Stiamo parlando di C non di C++...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    :(

    VVoVe: SI ma con il C non puoi usare le librerie C++!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    E comunque, iostream e' un include non una libreria ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.