新人求助:c primer plus第十二章编程练习9

「已注销」 2018-11-30 06:17:00
linux系统下运行输入size值后就报段错误(吐核),下面是代码,想知道问题出在哪
#include <stdio.h>
#include <stdlib.h>

void sr(int s2,char *s1[s2]);

int main()
{
int size=0,a=0;
printf("How many words do you wish to enter:");
scanf("%d",&size);
char *ptr[size];
printf("Enter %d words now:\n",size);
sr(size,ptr);
printf("Here are your words:\n");
for(a=0;a<size;a++)
{
printf("%s\n",ptr[a]);
free(ptr[a]);
}
return 0;
}

void sr(int s2,char *s1[s2])
{
char ls[40];
int a=0,b=0,d=0,inword=0;
int c[s2];
fgets(ls,40,stdin);
while(ls[a]!='\0')
{
if(ls[a]!=' ')
{
inword=1;
b++;
}
if(ls[a]==' '&&inword==1)
{
inword=0;
if(b!=0)
c[d++]=b;
b=0;
}
a++;
}
for(a=0;a<s2;a++)
s1[a]=(char *)malloc(c[a]*sizeof(char));
b=d=0;
for(a=0;a<s2;a++)
{
for(b=0;b<c[a];b++)
{
s1[a][b]=ls[d++];
if(ls[d]==' ')
d++;
}
}
}

...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqunhai 2018-12-01
  • 打赏
  • 举报
回复
分配数组大小不能使用变量
赵4老师 2018-12-01
  • 打赏
  • 举报
回复
请那些喜欢将数组作为函数参数传来传去或作为函数返回值的码农思考一下为什么不把整个互联网内容当作函数参数传来传去或作为函数返回值呢?
@风轻云淡_ 2018-12-01
  • 打赏
  • 举报
回复
数组的长度必须要用常量,因为程序会在开始运行时为它分配空间,再一个,初期学编程一定要用一个好的ide,哪怕不用也要用最新版的编译器,你这个编译都过不了,怎么能运行呢。
哼~~ 2018-12-01
  • 打赏
  • 举报
回复
数组的长度要用常量的吧

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧