#include void stampa_e_incrementa(int * x) { char b; char * c; printf("ricevo puntatore: %d\n",x); printf("valore puntato: %d\n",*x); /* x=x+1; */ *x = *x + 1; /* printf("puntatore dopo incremento: %d\n",x); b='M'; c=&b; printf("punt.car.prima:%d\n",c); c++; printf("punt.car.dopo:%d\n",c); */ } int main(int argc, char *argv[]) { int a; /* -32768 ... +32767 (16 bit signed) */ a=5; printf("Prima della chiamata: %d\n",a); scanf("%d",&a); stampa_e_incrementa(&a); printf("Dopo la chiamata: %d\n",a); return 0; } #include void scambia_valori(int * x, int * y) { int z; int * tmp; tmp=&z; printf("Prima: x=%d, y=%d\n",*x,*y); * tmp=*y; *y=*x; *x=* tmp; printf("Dopo: x=%d, y=%d\n",*x,*y); } int main(int argc, char *argv[]) { int a; int b; a=3; b=4; printf("Prima: a=%d, b=%d\n",a,b); scambia_valori(&a,&b); printf("Dopo: a=%d, b=%d\n",a,b); return 0; } int i; int quantevolte; if(argc!=2) { printf("Occorre esattamente un parametro!\n"); return 0; } quantevolte=atoi(argv[1]); /* ascii to integer */ for(i=0; i=0; i--) { int x; /* sottrai 48 al suo codice ASCII */ x=stringa[i]-48; /* moltiplicala per il suo "peso" (1, 10, 100.. ) a seconda della posizione */ x=x * peso; /* printf("La %d-esima cifra vale %d\n",i,x); */ tmp = tmp +x; peso=peso * 10; } printf("Sto ritornando il valore %d\n",tmp); return tmp; } int a=5; int b[2]; int * x; b[0]=10; b[1]=12; printf("a=%d,b[0]=%d,b[1]=%d\n",a,b[0],b[1]); x=&a; *x=4; printf("a=%d,b[0]=%d,b[1]=%d\n",a,b[0],b[1]); x=b; *x=25; printf("a=%d,b[0]=%d,b[1]=%d\n",a,b[0],b[1]); x=&(b[0]); *x=31; printf("a=%d,b[0]=%d,b[1]=%d\n",a,b[0],b[1]); x++; *x=77; printf("a=%d,b[0]=%d,b[1]=%d\n",a,b[0],b[1]); ==================== int main(int argc, char * argv[]) { FILE * miofile; if(argc!=3) { printf("Sintassi: esercizi \n"); return 0; } miofile=fopen(argv[1],"w+"); if(miofile==NULL) { printf("Impossibile aprire il file %s in scrittura!\n",argv[1]); return 0; } fprintf(miofile,"%s",argv[2]); fclose(miofile); printf("Ho scritto la stringa '%s' sul file '%s'\n",argv[2],argv[1]); return 0; } int main(int argc, char * argv[]) { FILE * miofile; /*char buffer[100];*/ char carattere; if(argc!=2) { printf("Sintassi: esercizi \n"); return 0; } miofile=fopen(argv[1],"r"); if(miofile==NULL) { printf("Impossibile aprire il file %s in lettura!\n",argv[1]); return 0; } printf("Contenuto del file '%s':\n",argv[1]); while(!feof(miofile)) { int risultato; risultato=fscanf(miofile,"%c",&carattere); if(risultato==-1)break; /*printf("risultato della fscanf = %d\n",risultato);*/ printf("%c",carattere); } fclose(miofile); return 0; } ============== int main(int argc, char * argv[]) { FILE * infile; FILE * outfile; char carattere; if(argc!=4) { printf("Sintassi: esercizi \n"); return 0; } if((argv[3][0]!='m') && (argv[3][0]!='M')) { printf("Il terzo parametro non e' valido!\n"); return 0; } infile=fopen(argv[1],"r"); if(infile==NULL) { printf("Impossibile aprire il file %s in lettura!\n",argv[1]); return 0; } outfile=fopen(argv[2],"w+"); if(outfile==NULL) { printf("Impossibile aprire il file %s in scrittura!\n",argv[2]); return 0; } printf("Conversione in corso del file '%s'...\n",argv[1]); while(!feof(infile)) { int risultato; risultato=fscanf(infile,"%c",&carattere); if(risultato==-1)break; if(argv[3][0]=='m') carattere=tolower(carattere); else carattere=toupper(carattere); fprintf(outfile,"%c",carattere); } fclose(infile); fclose(outfile); return 0; } int main(int argc, char * argv[]) { FILE * infile; FILE * outfile; char carattere; if(argc!=4) { printf("Sintassi: esercizi \n"); return 0; } if((strcmp(argv[3],"d")) && (strcmp(argv[3],"c"))) { printf("Il terzo parametro non e' valido!\n"); return 0; } infile=fopen(argv[1],"r"); if(infile==NULL) { printf("Impossibile aprire il file %s in lettura!\n",argv[1]); return 0; } outfile=fopen(argv[2],"w+"); if(outfile==NULL) { printf("Impossibile aprire il file %s in scrittura!\n",argv[2]); return 0; } printf("Conversione in corso del file '%s'...\n",argv[1]); while(!feof(infile)) { int risultato; risultato=fscanf(infile,"%c",&carattere); if(risultato==-1)break; if(argv[3][0]=='c') carattere=carattere+5; else carattere=carattere-5; fprintf(outfile,"%c",carattere); } fclose(infile); fclose(outfile); return 0; } ================== int main(int argc, char * argv[]) { FILE * infile; FILE * outfile; char carattere; if(argc!=5) { printf("Sintassi: esercizi \n"); return 0; } infile=fopen(argv[1],"r"); if(infile==NULL) { printf("Impossibile aprire il file %s in lettura!\n",argv[1]); return 0; } outfile=fopen(argv[2],"w+"); if(outfile==NULL) { printf("Impossibile aprire il file %s in scrittura!\n",argv[2]); return 0; } printf("Conversione in corso del file '%s'...\n",argv[1]); while(!feof(infile)) { int risultato; risultato=fscanf(infile,"%c",&carattere); if(risultato==-1)break; if(carattere==argv[3][0]) fprintf(outfile,"%s",argv[4]); else fprintf(outfile,"%c",carattere); } fclose(infile); fclose(outfile); return 0; } int main(int argc, char * argv[]) { FILE * infile; FILE * outfile; char carattere; int caratteri=0; int parole=0; int righe=0; int i; int carattere_appena_letto=' '; int ricorrenze[256]; for(i=0; i<256; i++)ricorrenze[i]=0; /* stampa: numero di caratteri del file numero di parole del file numero di righe del file Per ogni carattere alfabetico, numero di ricorrenze nel file */ if(argc!=2) { printf("Sintassi: esercizi \n"); return 0; } infile=fopen(argv[1],"r"); if(!infile) { printf("Impossibile aprire %s in lettura!\n",argv[1]); return 0; } while(!feof(infile)) { int risultato; risultato=fscanf(infile,"%c",&carattere); if(risultato==-1)break; caratteri++; if(carattere_appena_letto==' ' && carattere!=' ') parole++; carattere_appena_letto = carattere; if(carattere=='\n') righe++; ricorrenze[carattere]++; } outfile=fopen("statistiche.txt","w+"); if(!outfile) { printf("Impossibile scrivere!\n"); return 0; } fprintf(outfile,"Statistiche sul file:\n"); fprintf(outfile,"Caratteri: %d\n",caratteri); fprintf(outfile,"Parole: %d\n",parole); fprintf(outfile,"Righe: %d\n",righe); for(i=0; i<256; i++) { if( ricorrenze[i]>0)fprintf(outfile,"Carattere '%c': %d ricorrenze\n",i,ricorrenze[i]); } fclose(outfile); fclose(infile); return 0; }