带有指针的字符串数组

时间:2016-02-13 18:14:45

标签: c arrays string pointers

#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

1 个答案:

答案 0 :(得分:4)

你的问题在这里:

if (pps[i] = NULL)

应该是:

if (pps[i] == NULL)

请记住,=是一个赋值运算符,==是比较

还要记住在程序结束时使用free以避免内存泄漏。