Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;main.exe“;他犯了错误_C++ - Fatal编程技术网

C++ &引用;main.exe“;他犯了错误

C++ &引用;main.exe“;他犯了错误,c++,C++,我有一个简单的错误。该项目将创建基本菜单的框架。新命令仅从1计数到用户输入的整数。在继续之前,我已经发布了一个指向保存.cpp文件的粘贴库的链接: 程序的其余部分运行并工作。然而,错误很简单。我一输入任何命令,它就崩溃了。在运行错误检查之后,我发现错误不是while而是if语句。错误出现在与此类似的行上: if (stricmp(strstr(newCommand, cmd2), newCommand) == 0) 这一行应该做的是复制cmd2中的内容并将其放入纽科曼,然后将其与以下内容进行

我有一个简单的错误。该项目将创建基本菜单的框架。新命令仅从1计数到用户输入的整数。在继续之前,我已经发布了一个指向保存.cpp文件的粘贴库的链接:

程序的其余部分运行并工作。然而,错误很简单。我一输入任何命令,它就崩溃了。在运行错误检查之后,我发现错误不是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除了他想做一个不区分大小写的比较:)对不起,对于迟到的回复,我找到了答案,并修复了代码中的一些其他错误。我也简化了它,使它更容易添加到本项目的下一部分。谢谢大家的帮助。