C_and_CPP 板


LINE

最近遇到一个C语言的问题...感觉满奇怪的... 题目是...如果不在程式码上...设...字串大小... 结果输入一个字串...这样有办法印出来吗??? 例如:char *a; printf("字串:"); fgets(a); printf("%s",a); 不过这样好像可以编译过...但是打入字串...没有反应... 查了一些书上是说...可以利用副程式来写... 但是...还是写不出来...看看能不能有那位大大... 可以帮忙...谢谢...感激不尽... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.166.26
1F:推 ducksteven:char *a 没有空间让它存放东西,会有 runtime error 10/22 00:32
2F:→ james732:楼上的意思换句话说就是要改成 char a[100]; 10/22 00:36
3F:→ james732:当然大小不一定是100 视你的需求 10/22 00:36
4F:推 ducksteven:我的意思是至少要用 malloc 在 runtime 要空间 10/22 00:38
5F:→ freedomceas:所以要空间大小...也一定要设定罗... 10/22 00:41
6F:→ freedomceas:如果设定大小...输入超过大小的时候...这样就... 10/22 00:43
7F:→ ianfang:当然 不然要放哪 你只有指标阿 10/22 00:43
8F:→ freedomceas:没有办法在输入了... 10/22 00:43
9F:→ freedomceas:我是想说...也可以不用指标...看看有什麽方法... 10/22 00:45
10F:→ freedomceas:可以不用设定大小的状况下...这样比较自由... 10/22 00:46
11F:→ james732:所有的东西都是放在记忆体里 所以当然要分配空间给它 10/22 00:46
12F:→ james732:C++的string类别会包装了这些细节 使用上会比较方便 10/22 00:46
13F:→ james732:如果你的问题是「长度被固定」 就要利用malloc动态分配 10/22 00:47
14F:→ freedomceas:那不能...输入完毕之後...依照输入的多少...分配大小 10/22 00:47
15F:→ james732:你可以研究一下malloc的使用 但是这问题还是挺麻烦的XD 10/22 00:48
16F:→ james732:顺道一提 fgets这类的函式并不安全 10/22 00:49
17F:→ ianfang:没有可以直接用的方法~除非你用STL的string 10/22 00:49
18F:→ ianfang:不然你要自己实做~ 一开始写程式不用想那麽多 设很大就好 10/22 00:51
19F:推 legnaleurc:你不先读入怎麽知道输入的大小?XD 10/22 00:52
20F:→ freedomceas:fgets不安全???那用gets...会比较好吗??? 10/22 00:52
21F:→ ianfang:现在这个不是问题 他是想说buffer overflow吧~ 10/22 00:53
22F:推 ducksteven:未知的输入大小,你就一个字元读,直到换行罗 XD 10/22 00:54
23F:→ freedomceas:设定大小...可能也会遇到浪费的问题... 10/22 00:54
24F:→ freedomceas:所以.输入多少.在给多少空间.比较不会费浪或不够... 10/22 00:55
25F:→ james732:我同意你的想法,不过真的要做到 有一点麻烦 10/22 00:57
26F:推 ianfang:是...但你现在如果还是新手 这不是你该注意的重点 10/22 00:57
27F:→ james732:强烈建议懂了malloc动态配置的使用方式再回来想这个问题 10/22 00:59
28F:→ freedomceas:malloc动态配置...也是需要给定大小... 10/22 01:01
29F:→ ianfang:所以你一个个字元读进来 发现不够放重新malloc 10/22 01:04
30F:→ ianfang:这就是我说你要实做的... 10/22 01:05
31F:→ MOONRAKER:想太多了。 10/22 01:33
32F:→ MOONRAKER:以前本板有一个想不开的新手 每输入一个字元就重新配置 10/22 01:33
33F:→ MOONRAKER:新手想这种问题的下场通常就是那样 10/22 01:34
34F:→ MOONRAKER:现实世界所有的输入buffer都有大小上限 你能做的就是 10/22 01:34
35F:→ MOONRAKER:定一个大小,超过的丢掉,如此而已 10/22 01:35
36F:推 liu2007:stdin 连stdin 都不够的话我看你还是死心吧.... 10/22 09:49
37F:推 ledia:fgets 怎麽会不安全? O_O 10/22 10:13
38F:→ ledia:记忆体为什麽要先配置这个问题要讲可以讲很多 10/22 10:14
39F:→ james732:fgets并不理会buf的长度 因此会造成overflow 10/22 10:14
40F:→ james732:不该说不理会 只是它并没有要求buf长度做为参数 XD 10/22 10:15
41F:→ ledia:一开始就先定固定的值, 之後对整个程式运作原理/作业系统比 10/22 10:15
42F:→ ledia:较熟悉之後会比较有感觉 10/22 10:15
43F:→ ledia:你要不要去看一看 fgets 的参数? ^^: 10/22 10:16
44F:→ ledia:我想你是把 gets 跟 fgets 搞混罗 10/22 10:16
45F:→ james732:真的搞混了 XD 不过原po的范例fgets(a)也让我误会了 XDD 10/22 10:22
46F:推 carlcarl:= =" 10/22 13:17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP