我想使用指针将值复制到struct中。
我一直从这段代码中得到分段错误。

struct companyInfo
{
    double sharePrice;
    char companyName[100];
};

int main()
{
    struct companyInfo * pdata = NULL;
    strcpy(pdata->companyName, "sdfsd");

    exit(0);
}

最佳答案

您没有为结构分配任何空间,只是一个空指针。

struct companyInfo * pdata = NULL;
pdata = calloc( 1, sizeof(struct companyInfo) );
if( pdata != NULL )
    {
    strncpy(pdata->companyName, "sdfsd", sizeof(pdata->companyName) - 1);
    }

注意:calloc()也会为您清空内存,而不是只分配内存。此外,您应该检查这些函数的返回,以确保指针不为空。
重要提示:使用malloc()、calloc()、例如..分配的任何内存需要显式释放。
例子:
if( pdata != NULL )
    {
    free( pdata );
    }
exit(0);

关于c - c需要的基本结构帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9639004/

10-11 16:47