 |
|
 |
| Precedente :: Successivo |
Autore |
Messaggio |
|
|
ale23 Novizio
Registrato: 21/09/09 14:34 Messaggi: 1
|
Inviato: Lun Set 21, 2009 2:48 pm Oggetto: Programma in c..qualcuno sa aiutarmi? |
|
|
ho fatto questo programma in c ma non funziona e non so come fare..
il testo dell'esercizio si trova qui
http://www.zshare.net/image/65907151a13c2e27/
(mi riferisco agli esercizi 2 e 3)
il problema dovrebbe essere nell'int main..
comunque quando eseguo il programma esce la scritta segmentation fault
grazie mille
#include<stdio.h>
#include <string.h>
char Funzione (char numero[11] ,char m[5][80]);
int ConvertiNumero (char numero [1], int i);
int main ( char valore [10])
{
char cifra [5][80];
printf("inserisci il valore \n");
scanf("%s", valore);
Funzione (valore, cifra);
printf("%s", Funzione);
}
char Funzione (char numero[11] ,char m[5][80])
{
int i,j, q=0, n;
char num[1], mat[5][8];
char nome[10]="file.txt";
FILE*fp;
for(i=0; numero[i]<strlen(numero); i++)
{
n=ConvertiNumero (numero, i);
nome[strlen(nome)-5]='n';
fp=fopen(nome,"r");
for(i=0;i<5;i++)
for(j=0;j<8;j++)
fscanf(fp,"%c", &mat[i][j]);
m[5][q]=mat[i][j];
}
fclose(fp);
return m[5][q];
q+=5;
}
int ConvertiNumero (char num[1], int i)
{
if (num[i]=='0')
return 0;
else if (num[i]=='1')
return 1;
else if (num[i]=='2')
return 2;
else if (num[i]=='3')
return 3;
else if (num[i]=='4')
return 4;
else if (num[i]=='5')
return 5;
else if (num[i]=='6')
return 6;
else if (num[i]=='7')
return 7;
else if (num[i]=='8')
return 8;
else if (num[i]=='9')
return 9;
} |
|
Top |
|
 |
cali1981 Site Admin
Registrato: 16/01/06 22:01 Messaggi: 836
|
Inviato: Mar Set 22, 2009 1:40 pm Oggetto: |
|
|
Allora, intanto queste due righe non vanno:
Funzione (valore, cifra);
printf("%s", Funzione);
Dovrebbe essere qualcosa del tipo:
char c;
c = Funzione (valore, cifra);
printf("%s", c);
Ma immagino anche che Funzione debba restituire un char* o char[] e non semplicemente char.
Poi
int ConvertiNumero (char numero [1], int i);
dovrebbe essere
int ConvertiNumero (char numero, int i);
o meglio
int ConvertiNumero (char numero);
int ConvertiNumero (char num)
{
if (num=='0')
....
}
nome[strlen(nome)-5]='n';
mette il carattere n nella stringa, e non il valore di n. Devi usare invece la funzione itoa.
qui
return m[5][q];
q+=5;
Dopo il return non ci va niente, tanto è un pezzo di codice che non viene eseguito. _________________ Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!
Realizzazione siti web e applicazioni ASp.NEt, C/C++, C# |
|
Top |
|
 |
ixamit Novizio
Registrato: 27/09/09 11:23 Messaggi: 4
|
Inviato: Dom Set 27, 2009 11:25 am Oggetto: |
|
|
| Codice: |
#include <stdio.h>
#include <string.h>
#define MAX_CHARS 10
#define SIZE_Y 5
#define SIZE_X 8
int display (char *argv,char m[MAX_CHARS][SIZE_Y][SIZE_X])
{
int y,x,k;
for (y=0;y<SIZE_Y;y++)
{
for (k=0;k<strlen(argv);k++)
{
for (x=0;x<SIZE_X;x++)
printf ("%c",m[argv[k]-48][y][x]);
}
printf ("\n");
}
return (0);
}
int matrix_load (char m[MAX_CHARS][SIZE_Y][SIZE_X])
{
FILE *fp;
char filename[16];
char buff[16];
int x,y;
for (x=0;x<MAX_CHARS;x++)
{
sprintf (filename,"%d.txt",x);
fp=fopen (filename,"r");
if (!fp)
{
printf ("Warning: file %s not found\n",filename);
memset (m[x],' ',SIZE_Y*SIZE_X);
//
// Break all loading
//return 1;
}
else
{
for (y=0;y<SIZE_Y;y++)
if (fgets(buff, sizeof(buff)-1, fp)!=NULL)
strncpy (m[x][y],buff,SIZE_X);
fclose (fp);
}
}
return (0);
}
int main (int argc,char **argv)
{
char m[MAX_CHARS][SIZE_Y][SIZE_X];
int err=0;
if (argc==1)
{
printf ("Usage:\n\t%s 709421\n\n",argv[0]);
return (1);
}
if ((err=matrix_load (m))==0)
{
display (argv[1],m);
}
return (err);
}
|
|
|
Top |
|
 |
|
|
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|