Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- //Inserire in una lista n numeri, poi leggere dalla lista i numeri e dividere i pari dai dispari,
- //mettendo i pari in un vettore e i dispari in un file
- #define max 100
- struct node
- {
- int dato;
- struct node *next;
- };
- int main() {
- FILE *z;
- int V[max];
- int i, j, a;
- char c;
- struct node *p, *prec, *head;
- head = NULL;
- printf("scegli i numeri per la lista\n");
- while (1) {
- p = malloc(sizeof(struct node));
- p->next = NULL;
- if (head == NULL)
- head = p;
- else
- prec->next = p;
- prec = p;
- scanf("%d", &p->dato);
- printf("vuoi digitarne altri 1 si, altri no\n");
- scanf("%d", &a);
- if (a != 1)
- break;
- printf("digita L'altro numero\n");
- }
- p = head;
- i = 0;
- z = fopen("zfile", "w");
- while (p != NULL) {
- printf("stampa lista:%d\n", p->dato);
- if (p->dato % 2 == 0)
- {
- V[i] = p->dato;
- i++;
- } else
- {
- fprintf(z, "%d,", p->dato);
- }
- p = p->next;
- }
- fclose(z);
- z=fopen("zfile","r");
- printf("stampa vettore\n");
- for(j=0;j<i;j++)
- printf("%d\n",V[j]); //Qua avevamo sbagliato a stampare il vettore, stavamo stampando V[i]
- printf("stampa file\n");
- while(1) //Ciclo infinito
- {
- fscanf(z,"%d%c",&a,&c); //Leggo dal file il numero e la virgola (o eventualmente non leggo nulla perchè il file è finito)
- if(!feof(z)) //Chiedo se quello che ho appena letto sia un numero o se sono alla fine del file
- printf("%d",a); //se ho letto un numero lo stampo
- else break; //se ero alla fine del file allora esco dal ciclo infinito
- }
- //N.B. La fine di un file può essere letta come se fosse un carattere, è per questo m
- printf("\nciao");
- }
Advertisement
Add Comment
Please, Sign In to add comment