gpt4 book ai didi

c - C 中的指针和结构数组操作

转载 作者:行者123 更新时间:2023-11-30 17:40:11 24 4
gpt4 key购买 nike

 #define MAX_KEYS 65

struct Key {

int id;
char cryptkeys[MAX_KEYS];
};



int main(int argc, char ** argv) {
int MAX_LINE = 69;
struct Key *table[3];
struct Key *(*p)[] = &table;
//allocating space for the pointers in array
for(int i = 0; i < 4; i++) {
table[i] = malloc(sizeof(struct Key));
}
//parsing the id and the keys
char id[3];
char key[65];

for(int i = 0; i < size-1; i++) {
struct Key *k = (struct Key*)malloc(sizeof(struct Key));
string = a[i];
strncpy(id, string, 3);
id[3] = '\0';
k->id = atoi(id);
for(int j = 4; j < strlen(string); j++) {
key[j-4] = string[j];
}
strcpy(k->cryptkeys, key);
table[i] = k;
printf("%s", table[i]->cryptkeys); //this will print
}
for(int i = 0; i < sizeof(table) -1; i++) {
printf("%d", table[i]->id); //seg fault here, what is the difference from above?
printf(" ");
printf("%s", table[i]->cryptkeys);

}
return 0;
}

大家好,我有一个关于在 C 中操作指针的问题。我已经声明了一个指针数组,该数组将填充我创建的结构。每个结构接受我从文件中读取的 int 和字符串值。我的问题是关于编辑数组内部的值,特别是分配新值并访问其中已有的值。我在从文件中解析它们后分配我的值,但是当我尝试在下面打印它们时出现段错误。为什么我的代码在最后一个循环中保留段错误,我是否必须以与通常不同的方式打印指针数组中的值?谢谢!

最佳答案

sizeof(table) 不是 3。它实际上是 24,即 3*8(数组元素数*地址大小)。您会遇到段错误,因为您尝试访问未分配的table[3](等等)。

关于c - C 中的指针和结构数组操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592578/

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