gpt4 book ai didi

c - 指向结构体指针的指针

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

我正在尝试编写一个接收字符串并将它们动态存储到结构中的 C 程序,在传递字符串部分之后,我将展示它们中写得最多的部分。但我在编写指向结构体指针的指针时遇到了麻烦。我正在尝试做类似我绘制的图像 here 的事情.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Word{
char* palavra;
int aparicoes;
} ;

struct word createWord(char* str){
struct Word *newWord = malloc(sizeof(struct Word));
assert(newWord != NULL);

newWord->palavra = strdup(str);
newWord->aparicoes = 1;

return newWord;
}

int main (){
char* tempString;
struct Word** lista;
int triggrer = 1;
int i = 0;

while (triggrer == 1)
{
scanf("%s", tempString);

if (strcmp(tempString , "fui") == 0)
triggrer = 0;
else
{

while(*(&lista+i*sizeof(lista)) != NULL){
i++;
}

if(i == 0){
lista = malloc(sizeof(struct Word));

}
else{
lista = (struct Word*) realloc(lista, sizeof(struct Word) + i*sizeof(struct Word));
}

}
}

return 0;
}

最佳答案

任何地方都没有分配指针。

你需要这样的东西:

lista = (struct Word**) malloc(sizeof(struct Word*));
*lista = NULL;

上面分配了一个指向结构体的指针。指向结构本身的指针为空。

现在,不确定您想要实现什么

while(*(&lista+i*sizeof(lista)) != NULL){
i++;
}

如果你想找到指针数组的末尾,假设最后一个指针为 NULL,那么这是执行此操作的代码:

while (*(lista + i) != NULL) i++;

此外,代码中还有一些拼写错误。这将编译并工作。但我个人建议使用普通的指针数组(即将数组的大小保留在另一个变量中)。

struct Word{
char* palavra;
int aparicoes;
} ;
struct Word * createWord(char* str){
struct Word *newWord = (struct Word *)malloc(sizeof(struct Word));
newWord->palavra = strdup(str);
newWord->aparicoes = 1;
return newWord;
}
int main()
{
char tempString[1024];
struct Word** lista;
int triggrer = 1;
int i = 0;
lista = (struct Word**)malloc(sizeof(struct Word*));
*lista = NULL;
while (triggrer == 1)
{
scanf("%s", tempString);

if (strcmp(tempString , "fui") == 0)
triggrer = 0;
else
{

while(*(lista+i) != NULL){
i++;
}

lista = (struct Word**)realloc(lista, (i+1) * sizeof(struct Word*));
*(lista+i) = createWord(tempString);
*(lista+i+1) = NULL;
}
}
return 0;
}

关于c - 指向结构体指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649600/

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