[问题] 对字串的理解

楼主: timmy999 (愤怒a阿宅)   2019-01-20 19:56:36
大一 有一题题目问道
输入一种语言的你好 并输出他是哪种语言
共有6种 其余输出UNKNOWN (一律使用大写)
输入 # 时跳出
http://codepad.org/23dYbAua
这是我的程式码 不管输入什么都是UNKNOWN
我目前的理解是 字串最后会以\0做结尾
然后怕有残值所以要用memset清空
请问我是对那里不够清楚造成我无法解题
可以的话请给我方向
作者: Hurricaneger (裤袜脱落大尉)   2019-01-20 20:10:00
break是啥意思?
作者: crazycy (LCY)   2019-01-20 20:13:00
C的字串(字符阵列)不能用==比较 请参见strcmp()
作者: v86861062 (数字人:3)   2019-01-20 20:13:00
应该要用字串比较的函数吧 strcmp
作者: jerryh001   2019-01-20 20:16:00
字串清空第一格放\0就好 然后printf不用\0应该是\n换行
作者: idiont (supertroller)   2019-01-20 20:52:00
使用双引号包起来的字串都会自动加上\0 不用自己加scanf读进来的字串也会在结尾自动加上\0\0后面的内容不会有影响 所以也不必初始化char阵列
作者: Neisseria (Neisseria)   2019-01-20 21:11:00
https://pastebin.com/N3npZGy1 你要这个效果吗?
作者: a1u1usul3 (Q-Max)   2019-01-20 21:18:00
strcmp相等的状态会回传0,造成他不会进入,要改成!strcmp()或者strcmp()==0
作者: dces4212 (flawless)   2019-01-20 22:55:00
提醒一下 ==只能比较字符 假如比较字串应该是未定义行为 然后a == 这边的a是dereference出a[0]
作者: idiont (supertroller)   2019-01-21 00:05:00
a的值是&a[0] 然后双引号字串的值是字串的起始位置a是放在stack中 双引号字串放在data section 所以他们的值一定不一样
作者: LPH66 (-6.2598534e+18f)   2019-01-21 08:40:00
基本观念: C 字串 = 以 \0 结束的字符阵列所以几乎所有操作都是以整个阵列为主那因为运算子对阵列没有定义, 故这些操作都不是使用运算子那既然是使用一系列函数来操作那就要仔细看函数的回传值strcmp 并不只比较等不等, 所以你需要把其结果和 0 比较另外不确定你们老师有没有教, 不过请学着用 debugger有些东西用 debugger 可以容易知道问题在什么地方
作者: dces4212 (flawless)   2019-01-21 18:35:00
sor a不是dereference 说错了 a[0]才是
作者: jxzhe   2019-01-24 03:00:00

Links booklink

Contact Us: admin [ a t ] ucptt.com