gpt4 book ai didi

c - 将指针存储在指针数组中时遇到问题

转载 作者:行者123 更新时间:2023-11-30 15:32:33 25 4
gpt4 key购买 nike

我想逐行读取文件。每行由 504 个条目组成。我想将每一行的第一列存储在数组 array1 中,第二列存储在数组 array2 中,第三列存储在名为 array3 的数组中。我想将最后 500 个条目存储在 2D 数组 array4 中。

现在我尝试用指针来做到这一点,但我很难正确存储它们。

vrFile = fopen("file.txt","r");

int size = 1024, pos;
int c, cdbz;
char *buffervr = (char *)malloc(size);
char *bufferdbz = (char *)malloc(size);
int lin=0;
char *array1, *array2, *array3, **array4;
array1=(char *) malloc(5000*sizeof(double));
array2=(char *) malloc(5000*sizeof(double));
array3=(char *) malloc(5000*sizeof(double));

array4 = malloc(5000 * sizeof(double *));
int i;
for(i = 0; i < 5000; i++) {
array4[i] = malloc(nbins * sizeof(double));
}

tdbz = malloc(5000 * sizeof(double *));
for(i = 0; i < 5000; i++) {
tdbz[i] = malloc(500 * sizeof(double));
}

if(vrFile!=NULL) {
do { // read all lines in file
pos = 0;
do{ // read one line
c = fgetc(vrFile);
if(c != EOF) buffervr[pos++] = (char)c;
if(pos >= size - 1) { // increase buffer length - leave room for 0
size *=2;
buffervr = (char*)realloc(buffervr, size);
}
}while(c != EOF && c != '\n');
buffervr[pos] = 0;
// line is now in buffer
//printf("%s",buffervr);
char *ptr;
ptr = strtok(buffervr," \t");
int abs=1;
while(ptr != NULL) {
if(abs==1){
array1[lin] = ptr;
}
else if(abs==2) {
array2[lin] = atof(ptr);
}
else if (abs==3) {
array3[lin] = atof(ptr);
}
else {
array4[lin][abs-4]=atof(ptr);
}
abs++;

ptr = strtok(NULL, " \t");

}
lin++;
} while(c != EOF);
fclose(vrFile);
}
free(buffervr);

我的问题是,当我用 printf("%s\n",ptr) 打印出 ptr 时,我得到了正确的数字,例如显示第一行的第一个条目 (0.52312) 。但是当我尝试将 array1[lin] 分配给 ptr 时,我收到警告:

"assingnment makes integer from pointer without a cast"

printf("%i\n",array1[lin])

结果:“96”

有人知道为什么会发生这种情况以及我如何设法读取和保存不同数组中每行的浮点条目吗?

谢谢!

最佳答案

在这一行:

array1[lin] = ptr;

编译器告诉了一切:array1[lin]是一个charptr是一个char*.

关于c - 将指针存储在指针数组中时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com