Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio21:esercitazionib:esercitazione1

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio21:esercitazionib:esercitazione1 [17/02/2021 alle 18:14 (4 anni fa)] – [Esercizio 2] Massimo Torquatiinformatica:sol:laboratorio21:esercitazionib:esercitazione1 [19/02/2021 alle 08:23 (4 anni fa)] (versione attuale) – [Esercizio 2] Alessio Conte
Linea 5: Linea 5:
 Scrivere una funzione C che prende in input come primo argomento una stringa, come secondo argomento la lunghezza della stringa e restituisca nel terzo argomento la stessa stringa con tutti i sui caratteri in maiuscolo: Scrivere una funzione C che prende in input come primo argomento una stringa, come secondo argomento la lunghezza della stringa e restituisca nel terzo argomento la stessa stringa con tutti i sui caratteri in maiuscolo:
 <code c> <code c>
-void strtoupper(const char* in, int len, char* out);+void strtoupper(const char* in, size_t len, char* out);
 </code>  </code> 
  
-Scrivere il programma main di test per la funzione 'strtoupper' che prende la/le stringa/e da passare alla funzione come argomenti da linea di comando. +Scrivere il programma main di test per la funzione 'strtoupper' che prende la/le stringa/e da passare alla funzione come argomenti da linea di comando. Per convertire una lettera in maiuscolo si può usare 'toupper' (man 3 toupper).
  
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
Linea 14: Linea 14:
 Scrivere una funzione con nome 'mystrcat' con il seguente prototipo: Scrivere una funzione con nome 'mystrcat' con il seguente prototipo:
 <code c> <code c>
-const char *mystrcat(char* buffer, int buffer_size, char *prima, ...);+char *mystrcat(char* buffer, size_t buffer_size, char *prima, ...);
 </code> </code>
 La funzione prende come parametri un buffer, la lunghezza del buffer in bytes ed almeno una stringa (il parametro formale 'prima'). Le stringhe possono essere in numero variabile (>1). La funzione concatena tutte le stringhe passate come argomento all'interno del 'buffer' e ritorna il buffer stesso. La funzione prende come parametri un buffer, la lunghezza del buffer in bytes ed almeno una stringa (il parametro formale 'prima'). Le stringhe possono essere in numero variabile (>1). La funzione concatena tutte le stringhe passate come argomento all'interno del 'buffer' e ritorna il buffer stesso.
Linea 26: Linea 26:
 #include <stdlib.h> #include <stdlib.h>
  
-#define REALLOC_INC 16 +const int REALLOC_INC=16
-void RIALLOCA(char* buf, size_t newsize) {+ 
 +void RIALLOCA(char** buf, size_t newsize) {
   <inserire il codice per riallocare buf alla nuova size newsize>    <inserire il codice per riallocare buf alla nuova size newsize> 
 }      }     
Linea 35: Linea 36:
            
 int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
-  if (argc != 7) { printf("troppi pochi argomenti\n"); return -1; }+  if (argc 7) { printf("troppi pochi argomenti\n"); return -1; }
   char *buffer=NULL;   char *buffer=NULL;
-  RIALLOCA(buffer, REALLOC_INC);  // macro che effettua l'allocazione del 'buffer'+  RIALLOCA(&buffer, REALLOC_INC);  // macro che effettua l'allocazione del 'buffer'
   buffer[0]='\0'; // mi assicuro che il buffer contenga una stringa   buffer[0]='\0'; // mi assicuro che il buffer contenga una stringa
   buffer = mystrcat(buffer, REALLOC_INC, argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], NULL);   buffer = mystrcat(buffer, REALLOC_INC, argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], NULL);
informatica/sol/laboratorio21/esercitazionib/esercitazione1.1613585661.txt.gz · Ultima modifica: 17/02/2021 alle 18:14 (4 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki