免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4679 | 回复: 14
打印 上一主题 下一主题

C中如何在字符串未知的情况下赋值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-16 14:50 |只看该作者 |倒序浏览
如题   

用户输入的字符串个数是未知的   我该怎么定义呢

char a[];//长度未知啊!  怎么办     

只要能够连续接收用户的输入就行

论坛徽章:
0
2 [报告]
发表于 2007-09-16 14:53 |只看该作者
只能强制给一个最大长度

论坛徽章:
0
3 [报告]
发表于 2007-09-16 15:02 |只看该作者
原帖由 cugb_cat 于 2007-9-16 14:53 发表
只能强制给一个最大长度




有没有什么变通的方法    只要客户能够连续的输入就可以了

论坛徽章:
0
4 [报告]
发表于 2007-09-16 15:06 |只看该作者
原帖由 donglangjohn 于 2007-9-16 15:02 发表




有没有什么变通的方法    只要客户能够连续的输入就可以了

什么叫连续输入?再怎么输入也要有个最大的程度啊
除非使用字符链表,每输入一个就申请一块空间用于存放

论坛徽章:
0
5 [报告]
发表于 2007-09-16 15:10 |只看该作者

回复 #4 cugb_cat 的帖子

比如  我在屏幕上输入1234567890  也可能是123456789123456789

情况不定   我卡在这里了     请指点

论坛徽章:
0
6 [报告]
发表于 2007-09-16 15:35 |只看该作者
自己做个动态数组吧,往数组里写的时候发现长度超过一定阀值,就new一个新的数组,长度加倍...

论坛徽章:
0
7 [报告]
发表于 2007-09-16 15:38 |只看该作者
原帖由 donglangjohn 于 2007-9-16 15:10 发表
比如  我在屏幕上输入1234567890  也可能是123456789123456789

情况不定   我卡在这里了     请指点

c里面确实还不知道有什么好方法。如果输入是通过main()的参数形式输入的就好办,你可以用:

  1. char *str = malloc(strlen(argv[1]) + 1);
复制代码

这种方式。
要是是用scanf就不好办了。

论坛徽章:
0
8 [报告]
发表于 2007-09-16 15:47 |只看该作者

回复 #7 zx_wing 的帖子

还没学到那么高的地步   看不懂

论坛徽章:
0
9 [报告]
发表于 2007-09-16 15:54 |只看该作者
原帖由 donglangjohn 于 2007-9-16 15:47 发表
还没学到那么高的地步   看不懂

那建议lz先看看c语言书中讲main函数两个参数的部分,然后再看看malloc函数的用法。
如果是通过命令行运行程序,程序名后面跟参数的方法接收用户输入,这个办法即可以解决

论坛徽章:
0
10 [报告]
发表于 2007-09-16 16:04 |只看该作者
命令行参数的长度不可能是无限长的吧。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP