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';