gpt4 book ai didi

c - 如何在CS50音乐练习中完成is_rest()函数

转载 作者:行者123 更新时间:2023-11-30 14:50:33 25 4
gpt4 key购买 nike

当我从事 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com