提问:定义指针数组,想由用户输入字符串,怎么实现。

guicaisa 2014-11-17 02:49:48
如题,今天刚把指针这章学完,做课后的习题,输入3个字符串,由小到大排列。我自己想了下,决定用指针数组,然后输入3个字符串来做,,但发现不知道怎么输入,总是报错,求大神指导!
...全文
438 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guicaisa 2014-11-21
  • 打赏
  • 举报
回复
引用 7 楼 starytx 的回复:
[quote=引用 4 楼 guicaisa 的回复:] size_t是什么作用,,我还没学到这部分。。逐个free掉,是不是这样: for (i=0; i<3; i++) free(p[i]);
size_t是一种自定义的类型,相当于无符号int,不必过多纠结。是这样free的[/quote] 恩,了解了,谢谢你的解答。
guicaisa 2014-11-21
  • 打赏
  • 举报
回复
引用 6 楼 u012421456 的回复:
char * 型变量存储在静态存储区 char [] 型变量存储在堆栈中 所以不能直接输入 一楼的做法可以
谢谢你的解答。
starytx 2014-11-20
  • 打赏
  • 举报
回复
引用 4 楼 guicaisa 的回复:
size_t是什么作用,,我还没学到这部分。。逐个free掉,是不是这样: for (i=0; i<3; i++) free(p[i]);
size_t是一种自定义的类型,相当于无符号int,不必过多纠结。是这样free的
百曉生 2014-11-19
  • 打赏
  • 举报
回复
char * 型变量存储在静态存储区 char [] 型变量存储在堆栈中 所以不能直接输入 一楼的做法可以
羽飞 2014-11-19
  • 打赏
  • 举报
回复
引用 4 楼 guicaisa 的回复:
[quote=引用 1 楼 starytx 的回复:] 仅供参考,记得用完要逐个free
	char *p[3];
	for (size_t i = 0; i != 3; i++)
	{
		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100
		scanf("%s" ,p[i]);
	}
size_t是什么作用,,我还没学到这部分。。逐个free掉,是不是这样: for (i=0; i<3; i++) free(p[i]);[/quote] 楼主写的是对的
guicaisa 2014-11-19
  • 打赏
  • 举报
回复
引用 1 楼 starytx 的回复:
仅供参考,记得用完要逐个free
	char *p[3];
	for (size_t i = 0; i != 3; i++)
	{
		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100
		scanf("%s" ,p[i]);
	}
size_t是什么作用,,我还没学到这部分。。逐个free掉,是不是这样: for (i=0; i<3; i++) free(p[i]);
guicaisa 2014-11-19
  • 打赏
  • 举报
回复
引用 2 楼 u012421456 的回复:
你的代码什么样的,贴上来看看,总是报错?什么错,楼主啥也不说,怎么帮忙?难道楼主想帮忙直接给个程序?
我的意思是输入3个字符串,由用户输入,所以我想了,正好刚学了指针数组的方法,就自己写了个char * p[3].然后想输入3个字符串给这个指针数组,但是无论是用scanf还是gets好像不行,不知道该如何正确输入。
百曉生 2014-11-18
  • 打赏
  • 举报
回复
你的代码什么样的,贴上来看看,总是报错?什么错,楼主啥也不说,怎么帮忙?难道楼主想帮忙直接给个程序?
starytx 2014-11-17
  • 打赏
  • 举报
回复
仅供参考,记得用完要逐个free
	char *p[3];
	for (size_t i = 0; i != 3; i++)
	{
		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100
		scanf("%s" ,p[i]);
	}

69,371

社区成员

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

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