#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
答案 0 :(得分:4)
你的问题在这里:
if (pps[i] = NULL)
应该是:
if (pps[i] == NULL)
请记住,=
是一个赋值运算符,==
是比较
还要记住在程序结束时使用free
以避免内存泄漏。