繁体   English   中英

通过Visual Studio运行程序会导致失败?

[英]Running program through Visual Studio causes it to fail?

我正在编写的程序有问题。 这是一个命令行解析器,用于解析bencode(在torrent文件中使用)。 程序接受文件名作为命令行。 当我使用调试的Commmand Line arguments设置在Microsoft Visual Studio 10.0中构建并运行该程序以输入命令行时,该程序告诉我解析失败。

如果我打开命令提示符并使用相同的命令行从命令提示符运行该程序,则该程序运行良好! 这是怎么回事? 这是Visual Studio的常见问题吗?

我在Visual Studio中使用调试器来跟踪程序失败的地方,并且看来对stat函数的调用( http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx )用于获取长度该文件在Visual Studio中返回错误,但在Visual Studio外部运行时可以正常工作。

该代码使用Bencode解析器,可在此处找到: http : //funzix.git.sourceforge.net/git/gitweb.cgi?p= funzix/funzix;a=blob;f=bencode/bencode.c

这是程序的代码:

#include <stdio.h>
#include "../Parse/bencode.h"

int main(int argc, char *argv[]){
if(argc != 2){
    printf("Usage: whirlwind filename\n");
    return 1;
}

char *buf;
long long len;
be_node *n;

//read the torrent file into a buffer and store at &buf
buf = read_file(argv[1], &len);
if(!buf){
    buf = argv[1];
    len = strlen(argv[1]);
}

printf("Decoding: %s\n", argv[1]);
n = be_decoden(buf, len);

if(!n){
    printf("Parsing failed!\n");
    return 1;
}

if(n->type != BE_DICT){
    printf("This file is not a valid Bencoded Dictionary.\n");
    return 1;
}

int i;
char* keyName;

for(i = 0; i < 10; i++){
    keyName = n->val.d[i].key;
    if(keyName == "announce"){
        printf("\n\n");
    }
    printf("%s\n", keyName);
    if(keyName == "announce"){
        printf("\n\n");
    }
}

return 0;

}

如果从Visual Studio传递相对路径,则应确保当您的应用程序在IDE中运行时,它可以正确解析。 出现此问题的原因是,在调试时,当前目录通常为\\ bin \\ debug。
为了安全起见,请输入完整的路径名或从配置文件中读取文件的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM