Wie ktoś może jeszcze tę rzecz. Mam osobno funkcje
Save
Teraz za pomocą funkcji parametru main, chce podawać przy włączaniu programu w konsoli nazwe pliku wejsciowego i wyjsciowego tzn.:
./program1 macierz.txt wynik.txt
Jednakże jak przesłać teraz
char* argv[]
do funkcji save by działało wszystko poprawnie? bo jak dałem jako argument to nie działało.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if(argc < 3)
{
printf("Za malo argumentow");
return 0;
}
int rowlength,collength,row2length,col2length;
int row=0,col=0;
FILE* file;
file = fopen(argv[1], "r");
printf("Input number of rows for the first array!");
scanf("%d",&rowlength);
printf("Input number of columns for the first array!");
scanf("%d",&collength);
printf("Input number of rows for the second array!");
scanf("%d",&row2length);
printf("Input number of columns for the second array!");
scanf("%d",&col2length);
int tab[rowlength][collength],tab1[row2length][col2length];
printf("Elements in the text file:\n\n");
while( fscanf( file, "%d,", &tab[row][col] ) != EOF ) //WCZYTYWANIE WARTOŚCI Z PLIKU TXT DO 2 TABLIC
{
printf("%d ", tab[row][col]);
col++;
if(col==collength && row==rowlength-1)
{
printf("\n\n");
row=0;
col=0;
while( fscanf( file, "%d,", &tab1[row][col] ) != EOF )
{
printf("%d ", tab1[row][col]);
col++;
if(col==col2length)
{
printf("\n");
col=0;
row++;
}
}
}
if(col==collength)
{
printf("\n");
col=0;
row++;
}
}
printf("\n");
fclose(file);
Multiplication(rowlength,collength,row2length,col2length,tab, tab1);
return 0;
}
int Multiplication(int rowlength, int collength, int row2length, int col2length, int tab[rowlength][collength],int tab1[row2length][col2length]) // MNOŻENIE MACIERZY
{
int i,j,k;
int tab2[rowlength][col2length];
printf("Result of multiplication:\n\n");
for(i=0; i<rowlength; i++)
{
for(j=0; j<col2length; j++)
{
tab2[i][j] = 0;
for(k=0; k<row2length; k++)
{
tab2[i][j] += tab[i][k] * tab1[k][j];
}
}
}
for(i=0; i<row2length; i++)
{
for(j=0; j<col2length; j++)
{
printf("%d ", tab2[i][j]);
}
printf("\n");
}
Save(row2length, col2length, tab2);
}
void Save(int row2length, int col2length, int tab2[row2length][col2length]) // ZAPISYWANIE MACIERZY WYNIKOWEJ DO PLIKU
{
int i,j;
FILE* file2;
file2 = fopen(argv[2], "w");
if(file2==NULL) printf("Can't open the file!");
else
{
fprintf(file2,"The result: n");
for(i=0; i<row2length; i++)
{
for(j=0; j<col2length; j++)
{
fprintf(file2,"%d ", tab2[i][j]);
}
fprintf(file2,"\n");
}
fclose(file2);
}
}