我不是ac / c +程序员(我知道delphi),无论如何我试图编译用c ++编写的程序,我改变它接受一些参数(文件的路径,在原始代码中硬编码) )从命令行, orignial line是
char Filepath[50] = "F:\\mylib\\*.mp3";
我将其改为
char Filepath[50] = argv[1];
但我得到“无法从'char *'转换为'char []'”错误, 主要功能就像
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
我该怎么办?即时通讯使用MSVC6。
感谢
答案 0 :(得分:6)
使用:
char *Filepath = argv[1];
当argv[1]
已包含您想要的字符串时,无需为50个字符分配空间。此外,您无需确定命令行参数中的最大字符数;那个空间已经为你分配了。
但是请注意,上面的不会复制字符串,所以如果你打算修改字符串(可能是通过附加扩展名或其他内容),那么你将不得不使用strcpy()
或类似的解决方案。处理C中的字符串比Delphi中的手动字符复制工作要多得多。
答案 1 :(得分:6)
char Filepath[50] = argv[1];
为了复制字符串,如上例所示,您需要使用strcpy(或其任何变体)
另一种(更好的)方法是使用C ++字符串
std::string Filepath = argv[1];
也会复制字符串。
答案 2 :(得分:1)
或者,“格雷格说的是什么。”
答案 3 :(得分:0)
除了使用strncpy()或std :: string之外,最好还是看看为什么会出错。 我建议检查这个常见问题,看看指针和数组的来龙去脉。 http://c-faq.com/aryptr/index.html