Programmazione
Programmazione
Gestione file:
-Apertura
-Chiusura
-funzione fprintf():
fprintf(fp, "lorem ipsum"); //permette di scrivere su un file
-funzione fscanf():
-funzione fputsc():
fputc('a',fp); //permette di scrivere un singolo carattere in un file
-funzione fputs():
fputs("hello c programming",fp);
-funzione fgetc():
//La funzione fgetc() restituisce un singolo carattere dal file.
char c;
while((c=fgetc(fp))!=EOF){
printf("%c",c);
}
-funzione fgets():
// La funzione fgets() legge una riga di caratteri da file
char text[300];
printf("%s",fgets(text,200,fp));
fclose(fp);
sintassi:
char fgets(char variabile , int numCaratteriRiga, nomeFile);
-funzione fseek():
//La funzione fseek() viene utilizzata per impostare il puntatore del file sull'offset specificato. Viene utilizzato
per scrivere dati in un file nella posizione desiderata.
SEEK_SET SEEK_SET – It moves file pointer position to the beginning of the file.
-funzione freopen():
//funziona come fopen ma si applica ad un file esistente
fp=freopen(fileName, "r"); //inserire il modo
-funzione fflush():
//cancella il contenuto di un file
fflush(fileName);
-funzione feof():
restituisce falso (0) se il puntatore NON è posizionato alla fine del file
restituisce vero (!0) se il puntatore è posizionato alla fine del file
feof(fileName); //controlla che il puntatore si alla fine del file
-funzione rewind():
rewind(fileName); //posiziona il puntatore all'inizio del file
NOTA BENE
• In generale, è errato tentare di memorizzare il contenuto di un file in un vettore
La dimensione (numero di righe o di dati) di un file non è quasi mai nota a priori
Matrici:
-inizializzaione:
//esempio di inizializzazione di una matrice
int arr[4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
Strutture:
-definizione e inserimento dati:
//definizione della struttura
struct struct_name{
char esempioStringa[20];
char esempioStringa2[10];
int esempio3;
} nomeVariabileStruct; //nome della variabile struttura --> viene riservato lo
spazio in memoria
//NB possiamo inserire una struttura dentro un'altra struttura
int main() {
//inserimento dati all'interno della struttura (possono poi essere
sovrascritti)
strcpy(nomeVariabileStruct.esempioStringa,"Esempio");
strcpy(nomeVariabileStruct.esempioStringa,"Esempio");
nomeVariabileStruct.esempio3 = 1234;
return 0;
}
-array di strutture:
struct struct_name nomeArray[200];
Liste:
-def nodo:
//---definizione struct nodo---
struct node{
int data; // dato effettivo di ogni singolo nodo
struct node* next; //punta al prossimo nodo
};
-inizializzazione nodi:
//---inizializzazione dei nodi---
struct node* testa;
struct node* nodo1 = NULL;
struct node* nodo2 = NULL;
};
-allocazione memoria:
//---allocazione della memoria---
nodo1 =(struct node*)malloc(sizeof(struct node)); //alloca lo spazio per
allocare la struct node
nodo2 =(struct node*)malloc(sizeof(struct node));
-assegnazione valori:
//---assegnazione dei valori---
nodo1->data = 17;
nodo2->data = 86;
nodo3->data = 53;
-collegamento nodi:
//---collego tra loro i dati---
nodo1->next = nodo2;
nodo2->next = nodo3;
nodo3->next = NULL;
-primo nodo definito come testa:
// salvo indirizzo del primo nodo come indirizzo del nodo di testa
testa = nodo1;
-printare la lista:
void printList(struct node *p){ //struct node *p --> puntatore alla testa
della nostra struttura
printf("\n");
while(p!=NULL){
printf("|%d| -> ",p->data);
p = p->next;
}
printf("NULL\n");
}
-inserire un elemento in testa:
void list_insert(struct node** testa, int new_data){ //doppio puntatore in modo
che le modifica rimangano alla chiusura della funzione
struct node* nuovo = (struct node*)malloc(sizeof(struct node)); //alloco lo
spazio in memoria per il nuovo nodo
nuovo->data = new_data;
nuovo->next = *testa;
//cambio testa della lista
*testa = nuovo;
}
-inserire un elemento in mezzo:
int insert_order(list_el **t /*testa*/, int new_val, char *new_name, char
*new_surname){
}
return (0);
}
-scan della lista:
list_el* find (list_el *t, int val){
list_el *p;
p=t;
while (p!=NULL)
{ if (p->code==val)
return (p);
p=p->succ;
}
return (p);
}