C语言中的动态结构
我试图读取输入的名称,将其保存在一个动态结构中,在末尾添加一个数字(如果有),然后进行计数。我设法完成了第一部分,但我似乎无法将结构地址传递给应该计数的函数,也无法使函数正常工作C语言中的动态结构,c,struct,c-strings,C,Struct,C Strings,我试图读取输入的名称,将其保存在一个动态结构中,在末尾添加一个数字(如果有),然后进行计数。我设法完成了第一部分,但我似乎无法将结构地址传递给应该计数的函数,也无法使函数正常工作 struct ime_dadoteke { unsigned char *ime; unsigned char velikost; //this is the struct im working with }; 这是主要问题: struct ime_dadoteke *ime;
struct ime_dadoteke
{
unsigned char *ime;
unsigned char velikost;
//this is the struct im working with
};
这是主要问题:
struct ime_dadoteke *ime;
ime = ime_init();
int i=1;
do
{
naslednje_ime(ime, i); /*here is the problem with passing the
address. I also tried &ime with parameter
struct ime_dodoteke **ptr.
I get error cannot convert argument 1
from 'ime_dadoteke *' to 'ime_dodoteke *' */
i++;
} while (i <= st_korakov);
这是函数的骨架,它应该计算名称末尾的数字。我还没有构建它,因为我遇到了一个问题:不允许指向不完整类的指针
void naslednje_ime(struct ime_dodoteke *ptr, int i)
{
struct ime_dadoteke *ime = ptr;
ptr /*ptr is underlined (error) */->ime[ptr /*ptr is underlined (error) */->velikost - 1] = '0';
})
还要注意,我创建了一个字符串大小的结构,因为strlen()不想使用非常量字符。有办法解决这个问题吗?错误消息
指向不完整类的指针是不允许的
表示结构(您告诉我们,通过指针struct-ime\u-dadoteke*ptr
引用struct-ime\u-dadoteke的成员导致了错误消息)未在定义了naslednje\u ime
的源单元中定义。您需要将结构定义放在头文件中,并将其包括在您使用它的任何位置,也包括在您定义naslednje\u ime
的文件中。第一个任务是习惯使用英语标识符。你不是唯一需要阅读代码的人,大多数工作场所甚至开源项目都是全球性的。你甚至限制了可以阅读你的代码而不感到紧张的人的数量,从而限制了可以帮助你的人的数量。为什么在一个地方是ime\u-dooteke
,而在其他地方是ime\u-dooteke
?也许这是一个输入错误?不管使用哪种语言,我建议您编写一个更简单的程序,当您转到post on stack overflow(堆栈溢出)时,该程序仍然存在相同的问题。这样做还可以帮助您自己解决问题,因为您试图将代码简化为问题。naslednje_ime pototype、ime_init prototype在定义结构的同一头文件中声明。main和函数所在的文件都包含该头文件。还尝试定义函数所在的结构,效果相同。考虑一下这个问题:第一个函数不会得到这个错误。没关系,这是个打印错误。void naslednje_ime(结构ime_d/o/doteke*ptr,int i)。我现在觉得自己很愚蠢/没关系,发生在我们所有人身上。
void naslednje_ime(struct ime_dodoteke *ptr, int i)
{
struct ime_dadoteke *ime = ptr;
ptr /*ptr is underlined (error) */->ime[ptr /*ptr is underlined (error) */->velikost - 1] = '0';