当我运行代码(代码在所附的图像)没有出现在输出屏幕上,当我尝试argv[]
作为参数的strncmp()
函数。我在网上搜索,但我没有看到任何应用程序像这样的strncmp!
我发现的一切几乎都是这样的:
int strncmp(
const char *string1,
const char *string2,
size_t count
);
Not MSVC version code
我尝试了我在MSVC中附加的图像中的代码,如下所示:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include<string.h>
void main(int argc, char *argv[]) {
system("cls");
if (!strncmp(argv[1], argv[2], 8))
printf("Both strings are the same!");
else
printf("Not same!");
}
但输出屏幕上没有任何内容,MSVC没有检测到错误和警告。argv[1]
和argv[2]
都是我之前创建的.txt文件,其内容完全相同。
然后,我用两个字符串数组而不是以前的.txt文件来尝试这段代码,它如我所料地工作,并且很好(根据字符串,输出是 “两个字符串相同!" 或 “不相同!")
我怎样才能重写我所附图像中的代码,使它在MSVC中也能工作?!How I pass my command line argumentsIt works on code::blocks
1条答案
按热度按时间luaexgnf1#
可能发生的情况是您没有配置MSVC来正确传递参数,这意味着您将传递一个空指针到
strncmp
(也可能是一个不确定的指针)。这会导致 * 未定义的行为 ,并且很可能崩溃。
要解决这个问题,您必须*始终检查
argc
,以确保您有足够的参数。argc
的值是有效元素的个数,所以如果你需要两个参数,那么你必须检查它至少是3
:残酷地说,这本应该在任何像样的课堂、教程或书中教授。