C 数组值超写
大家好,我遇到了一个奇怪的问题我的代码我从文件中读取值,文件有行和列我在数组中存储第二列 但问题是,当我第一次在我的位置复制加密[0]=令牌时 当我在位置encryption[1]存储我的encryption[0]值并与encryption[1]相同时,我工作正常。在第三个循环encryption[0]中,encryption[1]与encryption[2]相同,因此最终所有值都成为最后排序的值 这是我的密码,请帮帮我C 数组值超写,c,linux,gcc,C,Linux,Gcc,大家好,我遇到了一个奇怪的问题我的代码我从文件中读取值,文件有行和列我在数组中存储第二列 但问题是,当我第一次在我的位置复制加密[0]=令牌时 当我在位置encryption[1]存储我的encryption[0]值并与encryption[1]相同时,我工作正常。在第三个循环encryption[0]中,encryption[1]与encryption[2]相同,因此最终所有值都成为最后排序的值 这是我的密码,请帮帮我 #include<stdio.h> #include <
#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, " ");
}
}
}
#包括
#包括
#包括
#包括
void main()
{
文件*f1=fopen(“2.19.18.110_202.142.175.104.csv”,“r”);
如果(f1==NULL)
{
printf(“未打开”);
}
char ch;
int行=0;
int col=0;
while(ch!=EOF)
{
ch=fgetc(f1);
如果(ch='\n')
行++;
如果(ch='')
col++;
}
fclose(f1);
int b=0;
int-gg=0;
//for(b=0;bencryption[]
只是一个指针数组-对于每个元素,您需要malloc()
足够的内存(strlen(token)+1
字节),然后使用strcpy()
将字符串内容从token
复制到encryption[gg]
更改:
token = strtok(NULL, " ");
encryption[gg] = token;
致:
别忘了free()
加密的每一个元素
稍后完成后,否则你会泄漏内存。好的,先生,谢谢你能告诉我使用malloc的意思吗……?你的代码格式很难看,所以我的大脑拒绝帮你;下次看预览。还有,为什么你要在示例中保留注释代码?你的代码很漂亮这是一个非常好的位置。缩进非常可怕,变量名毫无意义…@ThiefMaster:我至少修复了索引,但因为我还没有编辑权限,它正在等待社区在某些管道中达成协议:/Sajid应该有机会格式化他自己的代码。先生,要释放内存,我有2个写自由吗(加密)?@sajid:不,如果您分别malloc
每个元素,那么您需要分别free
每个元素,例如(i=0;i<10;+++i)free(加密[i]);
token = strtok(NULL, " ");
encryption[gg] = malloc(strlen(token) + 1);
strcpy(encryption[gg], token);