C++ &引用;main.exe“;他犯了错误
我有一个简单的错误。该项目将创建基本菜单的框架。新命令仅从1计数到用户输入的整数。在继续之前,我已经发布了一个指向保存.cpp文件的粘贴库的链接:C++ &引用;main.exe“;他犯了错误,c++,C++,我有一个简单的错误。该项目将创建基本菜单的框架。新命令仅从1计数到用户输入的整数。在继续之前,我已经发布了一个指向保存.cpp文件的粘贴库的链接: 程序的其余部分运行并工作。然而,错误很简单。我一输入任何命令,它就崩溃了。在运行错误检查之后,我发现错误不是while而是if语句。错误出现在与此类似的行上: if (stricmp(strstr(newCommand, cmd2), newCommand) == 0) 这一行应该做的是复制cmd2中的内容并将其放入纽科曼,然后将其与以下内容进行
程序的其余部分运行并工作。然而,错误很简单。我一输入任何命令,它就崩溃了。在运行错误检查之后,我发现错误不是while而是if语句。错误出现在与此类似的行上:
if (stricmp(strstr(newCommand, cmd2), newCommand) == 0)
这一行应该做的是复制cmd2中的内容并将其放入纽科曼,然后将其与以下内容进行比较:
char newCommand[] = "new";
这句话和你想象的不一样 它搜索在newcommand中出现的cmd2,并返回指向它的指针(如果未找到,则返回null),除非我错误地在stricmp中传递null,否则这是未定义的行为
你只需要一条简单的线,你就可以去掉那条线,因为它不能做你认为它能做的事 它搜索在newcommand中出现的cmd2,并返回指向它的指针(如果未找到,则返回null),除非我错误地在stricmp中传递null,否则这是未定义的行为 您只需要一个简单的stricmp,就可以删除拷贝了。这一行应该做的是拷贝cmd2中的内容,并将其放入newCommand中,然后在不使用caps的情况下将其与: 如果代码这样做了,它将把
cmd2
以前的内容与自身进行比较,不是吗
copy cmd2 -> newCommand
is cmd2 == newCommand?
如果用户键入“open”,那么在循环的第一次迭代中,它会将“open”复制到“newCommand”中,并且程序中的任何地方都不再有字符串“new”
strstr
在第一个字符串中搜索第二个字符串的出现
strstr("hello world", "world"); // returns pointer to 'world' in 'hello world'
strstr("biscuit", "new"); // returns NULL to indicate new doesn't occur in 'biscuit'
当然,你真正想做的只是:
if (stricmp(newCommand, cmd2) == 0) {
// match
}
顺便说一句,如果您确实想将“cmd2”复制到“newCommand”中,那么您需要使用strcpy(destinationStr,sourceStr)
“此行要做的是复制cmd2中的内容并将其放入纽科曼,然后在不使用caps的情况下将其与以下内容进行比较:”
如果代码这样做了,它将把cmd2
以前的内容与自身进行比较,不是吗
copy cmd2 -> newCommand
is cmd2 == newCommand?
如果用户键入“open”,那么在循环的第一次迭代中,它会将“open”复制到“newCommand”中,并且程序中的任何地方都不再有字符串“new”
strstr
在第一个字符串中搜索第二个字符串的出现
strstr("hello world", "world"); // returns pointer to 'world' in 'hello world'
strstr("biscuit", "new"); // returns NULL to indicate new doesn't occur in 'biscuit'
当然,你真正想做的只是:
if (stricmp(newCommand, cmd2) == 0) {
// match
}
顺便说一句,如果您确实想将“cmd2”复制到“newCommand”中,那么您需要使用strcpy(destinationStr,sourceStr)
您可能很有用。是否禁止您使用std::string?因为如果允许的话,代码会变得太多simpler@KateGregory除了他想做一个不区分大小写的比较:)对不起,对于迟到的回复,我找到了答案,并修复了代码中的一些其他错误。我也简化了它,使它更容易添加到本项目的下一部分。谢谢大家的帮助。你可能会很有用。你被禁止使用std::string吗?因为如果允许的话,代码会变得太多simpler@KateGregory除了他想做一个不区分大小写的比较:)对不起,对于迟到的回复,我找到了答案,并修复了代码中的一些其他错误。我也简化了它,使它更容易添加到本项目的下一部分。谢谢大家的帮助。