为什么我str=(char*)malloc(200*sizeof(char)); 这样子动态分配内存会出错,要怎样改正,还有要怎样释放;

#include<stdio.h>//统计单词的个数;#include<conio.h>#include<malloc.h>voidmain(){charstr[200]... #include<stdio.h>// 统计单词的个数;
#include<conio.h>
#include<malloc.h>
void main()
{
char str[200];
int i=0,n=0;
str=(char*)malloc(200*sizeof(char));
printf("请输入一行英文单词:");
gets(str);
while(str[i]!='\0')
{
if ((str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')&&(str[i+1]==' '||str[i+1]=='\0'||str[i+1]==','||str[i+1]=='?'||str[i+1]=='.'||str[i+1]=='!'))
n++;
i++;
}
if(str[5]=' ')
{
n--;
}
printf("一共有%d个单词\n",n);
getch();
}
展开
 我来答
ly6765395
2010-09-14 · TA获得超过141个赞
知道答主
回答量:105
采纳率:0%
帮助的人:0
展开全部
同意楼上的答案,char str[200];此语句定义的是一个数组,已经分配好内存了,无需再分配。(char*)malloc(200*sizeof(char));此语句实在内存里开辟一个指定大小的空间,并返回的是该空间的首地址,不能把一个内存的空间的首地址赋值给一个数组,但可以赋值给指针。所以改成char * str; 就可以了。
leehyfer
2010-09-14 · TA获得超过1518个赞
知道小有建树答主
回答量:576
采纳率:100%
帮助的人:226万
展开全部
char str[200];
改为
char * str;

还有,你的统计结果比实际的少了一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式