piątek, 28 kwietnia 2023

Use of pointers (C)

 


#include <stdio.h>

#include <stdlib.h>

#include <time.h>


#define kk 10


int a;

void int_S(int* tab);

void double_S(double* tab);

void text_S(char* text);


void init()

{

srand(time(NULL));

a=1+rand()%kk;

}

char write_Letter(int b)

{

if(b%2==0)

return 'A';

else

return 'B';

}


void int_S(int* tab)

{

for(int i=0;i<kk;i++)

tab[i]=a;

}

void double_S(double* tab)

{

for(int i=0;i<kk;i++)

tab[i]=(1.00*a)/100.00;

}

void text_S(char* text)

{

for(int i=0;i<kk;i++)

text[i]=write_Letter(a);

}


int main(int argc, char **argv)

{

void* int_T; int* temp_I;

void* double_T; double* temp_D;

void* char_T; char* temp_C;

init();

int_T=malloc(kk*sizeof(int));

double_T=malloc(kk*sizeof(double));

char_T=malloc(kk*sizeof(char));

temp_I=(int*)int_T;

temp_D=(double*)double_T;

temp_C=(char*)char_T;

int_S(temp_I);

double_S(temp_D);

text_S(temp_C);

free(temp_C);

free(temp_D);

free(temp_I);

return 0;

}

czwartek, 6 kwietnia 2023

sendfile, malloc, free() - example C

 #include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <fcntl.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <sys/sendfile.h>


#define kk 10

#define mm kk*kk


int** tab;

double** tab_Sqrt;

double** tab_Aver;


struct stat new_Buff;


struct Point

{

int m_Int;

double m_Sqrt;

double m_Aver;

};


 int date_File,copy_date_File;

int main(int argc, char **argv)

{

int i,j,k,l;

FILE *fp;

off_t off1;

tab=malloc(kk*sizeof(int*));

tab_Sqrt=malloc(kk*sizeof(double*));

tab_Aver=malloc(kk*sizeof(double*));

off1=0;

struct Point* new_Point=malloc(mm*(sizeof(struct Point)));

for(i=0;i<kk;i++)

{

tab[i]=malloc(kk*sizeof(int));

tab_Sqrt[i]=malloc(kk*sizeof(double));

tab_Aver[i]=malloc(kk*sizeof(double));

}

l=0;

for(i=0;i<kk;i++)

{

for(j=0;j<kk;j++)

{

k=(i+1)*(j+1);

tab[i][j]=k;

tab_Sqrt[i][j]=sqrt(1.00*k);

tab_Aver[i][j]=1.00/(1.00*k);

new_Point[l].m_Int=tab[i][j];

new_Point[l].m_Sqrt=tab_Sqrt[i][j];

new_Point[l].m_Aver=tab_Aver[i][j];

++l;

}

}

if ((fp=fopen("new_Point.txt", "w"))==NULL) 

{

     printf ("Can't open the file - new_Point.txt\n");

     exit(1);

     }

     for(i=0;i<mm;i++)

     {

fprintf(fp,"%d",new_Point[i].m_Int);

fprintf(fp,"%.2f",new_Point[i].m_Sqrt);

fprintf(fp,"%.2f",new_Point[i].m_Aver);

fprintf(fp,"\n");

}

fclose(fp);

date_File=open("new_Point.txt",O_RDONLY);

fstat(date_File,&new_Buff);

copy_date_File=open("copy_Point.txt",O_WRONLY | O_CREAT,new_Buff.st_mode);

sendfile(copy_date_File,date_File,off1,new_Buff.st_size);

close(copy_date_File);

close(date_File);

for(i=0;i<kk;i++)

{

free(tab[i]);

free(tab_Sqrt[i]);

free(tab_Aver[i]);

}

free(new_Point);

free(tab_Aver);

free(tab_Sqrt);

free(tab);

return 0;

}