- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我从事 CS50 pset3 音乐练习时(下面的练习的一部分对此进行了解释)。我想出了一些问题:
is_rest()
完成helpers.c中is_rest的实现。回想一下,空行代表机器可读格式中的休止符。回想一下,synthesize 将调用此函数来确定用户输入的其中一行是否确实是空白。
一行空白是什么意思?要回答这个问题,首先查看 cs50.h 本身,其中记录了 get_string:
https://github.com/cs50/libcs50/blob/develop/src/cs50.h
PS:我检查了链接,但找不到/理解。
get_string 顶部的注释表示,如果用户只需按 Enter 键,从而仅输入“行结尾”(即\n),该函数就会返回什么?
当 is_rest 随后传递这样一个字符串 s 时,它(不,是你!)应该如何识别?
我的问题是:
为什么您认为代码运行不清晰?
// Determines whether a string represents a rest
bool is_rest(string s)
{
if (s == "")
{
return true;
}
return false;
}
但这一个显然有效:
bool is_rest(string s)
{
if(s[0] == '\0')
{
return true;
}
return false;
}
这两种情况使用的方法有什么区别?
另一方面,有人可以解释一下 ""
和 '\0'
最佳答案
更新:
正如 @Mark Benningfield 所指出的,string
只是 char* 的别名。在这种情况下,您不能直接比较它,而是需要使用 strcmp() 函数。
表达式 s==""
比较 s 是否指向与 ""
相同的地址,但不比较 s 是否具有与 ""相同的内容。
另一方面,表达式 s[0]=='\0'
您正在访问字符串 s
的第一个字符并测试是否包含 \0
。
因为第二个表达式是正确的,而第一个表达式不正确。
关于c - 如何在CS50音乐练习中完成is_rest()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937504/
我是一名优秀的程序员,十分优秀!