[问题] 阵列内元素变为最后输入的字串

楼主: wm0116 (杰尼)   2020-10-23 00:57:02
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
devc++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
阵列内元素变为最后输入的字串
喂入的资料(Input):
浮点数,用阵列储存
预期的正确结果(Expected Output):
判定是否为浮点数
错误结果(Wrong Output):
阵列内元素都是一样的
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://glot.io/snippets/fscp7lm85d
补充说明(Supplement):

我自己用devc++执行的成果
作者: ucrxzero (RX-0)   2020-10-23 01:02:00
scanf("%s",number);改成scanf("%s",&number);要改值一定要传位址R忽略上面我知道你问题在哪了number被改烂了一样是number的问题,你number一变前面都会跟着变number是位址~~~你只是一值改number指向的值而已~
楼主: wm0116 (杰尼)   2020-10-23 01:09:00
那我这边怎么改才会变成我想要的结果呢
作者: ucrxzero (RX-0)   2020-10-23 01:15:00
不能动架构吗?还有我有一个问题 你要输入浮点数float不是才占4byte为什么要用50byte?
楼主: wm0116 (杰尼)   2020-10-23 01:19:00
我只是多给他大小而已,我不清楚我要如何修改他才会变成我想要的结果,我能想到的只有这样而已QQ
作者: ucrxzero (RX-0)   2020-10-23 01:21:00
帮你改好了改成宣告 char number[50][50];改 scanf("%s",number[i]);改 a[i]=number[i];万事如意
楼主: wm0116 (杰尼)   2020-10-23 01:23:00
换句话说,我只能用二维阵列存放资料,再去做判定跟修改
作者: ucrxzero (RX-0)   2020-10-23 01:24:00
因为你原本写的是改number指向的值,然后把number的位址放进a[i]我举个例: 你原本像是一个循环指令 var=num但你每次指定给a[i]的都是&var那等于没改只是刚好C字串的位址就是他的字串,你误以为传到值
楼主: wm0116 (杰尼)   2020-10-23 01:27:00
我明白了,也就是不同的值要指向不同的位子我的写法是让他通通指向同一个位子,所以才有问题
作者: ucrxzero (RX-0)   2020-10-23 01:27:00
楼主: wm0116 (杰尼)   2020-10-23 01:28:00
感谢大大
作者: ucrxzero (RX-0)   2020-10-23 01:28:00
循环指定字串不可能在同一个字串内搞因为字串本身就是位址
楼主: wm0116 (杰尼)   2020-10-23 01:29:00
因为阵列是常数指标,所以我不能在循环这样搞
作者: ucrxzero (RX-0)   2020-10-23 01:29:00
除非拆解原number[0]+number[1]这种方法,但要重构算了上面那句话当我没说式的
楼主: wm0116 (杰尼)   2020-10-23 01:31:00
因为小弟我没学到那么深奥,所以只能用最原始的方法处理
作者: ucrxzero (RX-0)   2020-10-23 01:33:00
我把我01:29的话重新讲一次好惹你要用指向的写法写 要类似这样int main(void){char a[10];a[0]='a'; a[1]='b', a[2]='c' ;}这种就是指向的方法
楼主: wm0116 (杰尼)   2020-10-23 01:36:00
拆成一个个字符去做存入的动作吧?这样才能指向?
作者: ucrxzero (RX-0)   2020-10-23 01:37:00
你就会得到a="abc" 再用atof转就可以,照你原本逻辑是这对啊%s跟%c的作法不一样RRRR但就要重构你的程式码了我也没写过但一定可行你的问题这样有解决了吗
楼主: wm0116 (杰尼)   2020-10-23 01:39:00
有,我明白该如何处理了,谢谢大大解惑
作者: ucrxzero (RX-0)   2020-10-23 01:44:00
建议*a[50] 也改成a[50][50]没是忽略上面的那段话我以为会存取错误应该不会
楼主: wm0116 (杰尼)   2020-10-23 01:46:00
好的,我明白啦,感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com