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

int main()
{
    char **pps;

    int i, n = 10;

    char name[256];

    pps = (char **)calloc(n,sizeof(char **));

    for (i=0; i<n; i++)
    {
        printf("\n Enter name[%d]: ",i+1);
        gets(name);
        printf("\n Name=%s len=%d",name,strlen(name)+1 );

        pps[i] = (char *)malloc(strlen(name)+1);
        printf("\n pps[i]=%u",pps[i]);
        if (pps[i] = NULL)
        {
            perror("\nerror in malloc");
            exit(1);
        }

        printf("\n pps[i]=%u",pps[i]);
        strncpy(pps[i],name,strlen(name)+1);
    }

}

/*程序的输入/输出:
输入名称[1]:abcdef
 Name=abcdef len=7
 pps[i]=13311184
 pps[i]=0

*/
程序给出运行时错误???
请帮忙找出问题所在,为什么PPS[i]会被激怒???
我正在使用visual studio 2010

最佳答案

你的问题是:

if (pps[i] = NULL)

应该是:
if (pps[i] == NULL)

记住=是赋值运算符,而==是比较运算符
还要记住在程序末尾使用free,以避免内存泄漏。

关于c - C中带有指针的字符串数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35383536/

10-12 16:11