hello every one i am facing a strange problem i my code i am reading values from the file and file has rows and columns i am storing the second column in my array
but the problem i that when i first time copy in my position encryption[0] = token
i works well when i store at position encryption [1] my encryption [0] value over write with and become the same as encryption[1] the again at third loop encryption [0] ,encryption [1] become same as encryption [2] so in the end all values become the last sored value
here is my code kingly help me
#include<stdio.h>
#include <sys/stat.h>
#include<time.h>
#include<string.h>
void main()
{
FILE * f1 = fopen("2.19.18.110_202.142.175.104.csv" , "r");
if(f1==NULL)
{
printf("not open");
}
char ch;
int row =0;
int col=0;
while(ch!=EOF)
{
ch = fgetc(f1);
if(ch=='\n')
row++;
if(ch==' ')
col++;
}
fclose(f1);
int b=0;
int gg=0;
//for( b=0;b<row;b++)
char * encryption[row];
char payload[col*10];
FILE * f2 = fopen("2.19.18.110_202.142.175.104.csv" , "r");
while( fgets ( payload, sizeof payload, f2)!=NULL)
{
int col1=0;
printf("b= %d\t" , b);
// fgets ( payload, sizeof payload, f2);
fputs(payload ,stdout);
printf("\n\n");
char *token;
token = strtok(payload, " ");
token = strtok(NULL, " ");
encryption[gg] = token;
printf("token %s\n" ,token);
gg=gg+1;
printf("encryption %s\n" ,encryption[0]);
printf("encryption %s\n" ,encryption[1]);
printf("encryption %s\n" ,encryption[2]);
printf("encryption %s\n" ,encryption[3]);
token = strtok(NULL, " ");
while ( token != NULL)
{
token = strtok(NULL, " ");
}
}
}
encryption[]is just an array of pointers – for each element you need tomalloc()sufficient memory (strlen(token) + 1bytes) and then usestrcpy()to copy the string contents fromtokentoencryption[gg].Change:
to:
Don’t forget to
free()each element ofencryptionlater when you’re done, otherwise you’ll leak memory.