非常感谢所有回答的人,我意识到我在这方面做得很烂,我会考虑每一个答案,希望我能设法编译一些有用的东西
最佳答案
一些说明:
- 分配 500 MB 以防万一似乎不是个好主意。更好的方法是先分配少量内存,如果不够,则分配两倍大的内存,等等(如果您按字符读取数字,这会起作用)。 重要:在每次(重新)分配之后,您必须立即检查您的 malloc 调用是否成功(即它返回的不是 NULL),否则您将无法继续。
- 第一个 getchar() 是做什么用的?
- 不使用gets(),你可以尝试一个一个地读取字符,直到遇到不是数字的东西,此时你可以认为数字输入已经完成(这是最简单的方式,显然可以以不同方式处理用户输入)。
- 不需要为使用 gets() 读取的内容添加“\0”,afaik(对于将逐个字符读取的内容,这是有意义的)。
- 最后但同样重要的是,您还应该注意实际释放分配的内存(即在完成
num
后调用free()
)。不这样做会导致内存泄漏。 - (更新)
printf("%c",num[0]);
将只打印字符串num
的第一个字符。如果你想打印出整个字符串,你应该调用printf("%s",num);
关于c - 阅读数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22332503/