C语言关于字符串的问题(本人较菜,请教高手)

jrkbjx 2010-10-25 07:57:09
编写一个函数,统计出一个字符串中的单词数,将每个单词存起来,并且返回最长单词。函数原型定义如下:char * word ( char * str )(最好不用库函数···) 。另外,想请教高手关于二维(多维)数组内存分配和重新分配的问题。
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jcwKyl 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jrkbjx 的回复:]

不好意思,是我说的不清楚,我的意思是动态创建一个二维指针,然后根据实际需要的大小再重新分配大小···
[/Quote]
重新分配都是先释放再分配,比如:
int **p = malloc(m * sizeof(int*));
for(int i = 0; i < m; i++) p[i] = malloc(n * sizeof(int));
以上就分配了一个m * n的二维int数组。
释放:
for(int i = 0; i < m; i++) free(p[i]);
free(p);

你的那个word函数可以每读一个单词就记录它的长度,然后更新最长单词长度和最长单词在输入字符串str中的位置,最后返回这个位置,程序很容易实现。
dingshaofengbinbin 2010-10-25
  • 打赏
  • 举报
回复
动态分配:
int **a=new int*[m];
for(int j=0;j<m;j++)
a[j]=new int[n];
如果需要重新分配的话,首先把先前分配的free掉,然后再重新分配。
cheng_fengming 2010-10-25
  • 打赏
  • 举报
回复
要是用库函数的话我觉得就很简单了,用strtok函数分离字符串很方便,然后你可以存到一个字符串数组里面
如果不用保存这些单词的话,那定义一个字符数组或者字符串变量就可以了,取一次然后比较一次,长度比变量长就替换,后则继续,最后就返回最长的单词了。
jrkbjx 2010-10-25
  • 打赏
  • 举报
回复
不好意思,是我说的不清楚,我的意思是动态创建一个二维指针,然后根据实际需要的大小再重新分配大小···
jixingzhong 2010-10-25
  • 打赏
  • 举报
回复
数组不能重新分配内存

指针可以重新分配内存,操作函数可以使用realloc,
更多信息可以参考:
http://edu.gamfe.com/tutor/d/12272.html

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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