Piccolo Cheat Sheet per il C – parte 3

Terza parte del Cheat Sheet per il C

  • Operazioni su File

file di testo possono effettuano trasformazioni dei caratteri (es ‘\n’), file binari non effettuano nessuna trasformazione.

di defautlt i file sono aperti come file di testo.

Puntatore a file: FILE *f

apertura file f = fopen("nome", "modalità") modalità = r, w, a, rb, wb, ab, r+, w+, a+, r+b, w+b, a+b

chiusura file: fclose(f)

feof(f) (0 = no fine, !=0 = fine)

fputs("stringa",f), fgets(char *s, length + 1, f) (legge fino a \n incluso, o fino a length)

rewind() = riavvolge il file

ferror(f) (0 = no errori, != 0 = errore) [reset ad ogni operazione]

remove("nome file")

fflush(f)

fread(void *buffer, num_byte, numero, f), fwrite(void *buffer, num_byte, numero, f) (num_byte = dimensione di un oggetto, numero = numero di oggetti da leggere o scrivere)

fseek(f, long offset, int origine) (origine = SEEK_SET, SEEK_CUR, SEEK_END)

fprintf(f, "%%%%", ,,,), fscanf(f, "%%%%", &&&&)

./nome_prog < INPUT > OUTPUT

stdout, stdin, stderr

freopen("nome", "modalità", f) (permette di redirezionare uno stream, ad esempio per redirezionare stdout)

  • Preprocessore

direttive eseguite prima della compilazione

#define MACRO val_macro

#error msg (chiede al compilatore di interrompere la compilazione, viene restituito msg)

#include <stdio.h> / #include "mioheader.h"

#if ESPRESSIONE_COSTANTE, #else, #elif ESPRESSIONE_COSTANTE, #eindf (#endif obbligatorio al termine del blocco condizionale #if [[#elif] #else])

#ifdef MACRO (== #if defined MACRO), #ifndef MACRO (== #if !defined MACRO) [finiscono obbligatoriamente con #endif]

#undef MACRO (elimina la macro)

#line numero ["nomefile"] (permette di cambiare il valore di __LINE__ e __FILE__ che contengono il numero di riga e il nome del file)

#pragma (invia comandi al compilatore, dipende dal compilatore)

#, utilizzato con #define permette la conversione di quello che viene dopo in stringa, es:

#define mkstr(s) # s

...

printf(mkstr(pippo));

...

trasforma la printf in printf("pippo")

##, utilizzato con #define concatena quello che viene dopo, es:

#define concat(a,b) a ## b

...

int xy = 10;

printf("%d", concat(x,y));

...

converte la printf in printf("%d", xy)

macro predefinite:

__LINE__

__FILE

__DATE__ (stringa "mese/giorno/anno", indica la data dell’ultima compilazione)

__TIME__ (stringa "ore:minuti:secondi", indica l’ora dell’ultima compilazione)

__STDC__ (dipende dall’implementazione)

__cplusplus (se compilatore standard C++ contiene almeno sei cifre)

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...