#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/